偶在項目中需要利用到相關矩陣運算﹐矩陣元素需用到無窮大或無窮小的double型﹐哪位高手指點迷津﹐如何實現﹐謝謝﹗
解决方案 »
- log4j的配置文件如果放到src同级别目录下,如何去读取
- 关于java的JTextField
- 如何设置JComboBox为默认展开?
- jni的内存泄漏问题
- 多线程读同一个文件 进者有分
- 真没想到这样被难到了,用记事本编码???---HELP...
- 还是概念不清楚,望牛人路过此处一解!
- 求救:jdbComboBox的keyPressed事件怎么不好用啊?
- JCreator Pro 和JCreator LE有何不同?
- 页面提交时产生的乱码问题(加急!!!)
- 关于程序处理中的图片弹出问题(可能标题表示不清楚,请进帖子看看具体情况)
- 为什么我在ContentPane中add一个component后,要改变Frame的大小才能显示正确???
如果是绝对值,那么可以使用1e308表示无穷大,1e-308表示无穷小。
如果不是绝对值,那么可以用-1e308表示无穷小。
不说java,现实生活中有吗?
首先我不明白“相关矩阵运算”是什么,不知道是不是港台和大陆叫法不一样。
其次,我认为如果不是符号计算的话,在运算过程中无穷大的数可以用有穷大的数表示,当然程序的正确性仰赖于你对这个充分大的数的选择的技巧。
如果你能把无穷大的数用一个符号表示,那当然是再好不过的事情了,或许有可能可以实现一个包含无穷大、无穷小的表示有理数的类,为无穷大和无穷小的数定义他们的运算。不过我不明白为什么你明知double无法满足你的要求,而你似乎还在寻求怎么用double型来完成任务???
至少也要定义一个数据结构嘛,比如:
class MyDouble
{
public double value;
public boolean positiveInfinite;
public boolean negtiveInfinite;
}
要么干脆使用字符串了。
再有,程序中无法进行真的理论数值运算的,比如double类型的数据,精度只有15位有效数字,能满足你的要求么?加入需要对2开平方,你能接收用一个只有15位精度的数字表示2的平方根吗?如果能,那么为什么不能用10的300此方表示无穷大呢?
[3 inf]-->[2 inf]-->[1 inf]-->[0 inf]--| 最後為一循環﹐此圖中只有四個狀態﹕
^| __|
我找到一篇文章這樣些﹕从数学的角度说无穷大只是一个过程,不是一个数
具体的在Java中,Integer类里面并没有定义所谓的无穷大数。
在Double中
Double.POSITIVE_INFINITY == Double.longBitsToDouble(0x7ff0000000000000L)
Double.MAX_VALUE == Double.longBitsToDouble(0x7fefffffffffffffL)在這種情況下﹐ 此任務的狀態空間圖將有0x7ff00000個狀態。因此欲尋求一種方法表示無窮的概念﹗
(1)Java有丰富的类型系统,和强大的流程控制功能,只要是确定的逻辑过程,基本没有Java无法表示的。
(2)对于数值类型来说,所有的语言本身都无法直接表示无穷大,因为数值类型的精度、范围直接依赖于字长,而暂且不说CPU的字长,即便你用所有的内存加所有的硬盘空间用来表示一个整数,它还是一个有限的数。
(3)再从数学的角度分析,“无穷大”本身就不是一个值,不是int,也不是double,更不是char。再一定程度上,可以认为“无穷大”是一个永不退出的函数,或者是一个永真的循环控制变量。
变成 0 + 1+((-1)+2)+((-2)+3) +((-3)+4).......((-n)+(n+1))
得多少?
n是不确定的,无穷大?无穷大有多大?这好像永远到底有多远一样啊再说,从机器的方面说,还是看steedhorse(晨星)说的吧
然后标记一个符号来表示无穷!比如:MaxNum
然后规定:1:MaxNum加减任何数 =MaxNum
2:MaxNum乘除任何正数=MaxNum
3:MaxNum乘除任何负数=(负)MaxNum
4:任何数除以MaxNum = 0
5:MaxNum / MaxNum =? //不确定,出错
6:MaxNum * 0 = ? //不确定,出错
7:任何正数数除以 0 = MaxNum
8:任何负数数除以 0 = (负)MaxNum
呵呵~~~~