Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 浮点值太小_Java_Limit_Minimum - Fatal编程技术网

Java 浮点值太小

Java 浮点值太小,java,limit,minimum,Java,Limit,Minimum,我正试图打印出我正在处理的方程的值。方程式为: (2^k)/(k!) 我正在使用Java和浮动,但是当k变大时,我遇到了一个问题。当它变大时,方程的底部比顶部大得多。你可以想象方程的极限是0。但是当这个数字变小时,它会通过1*10^-31,一旦它似乎通过了这个值,浮点值就会增加。我假设这个数字太小,一旦它通过10^-31Java就会做出反应,使它成为一个更大的值。类似于如果浮点值超过float.MAX_值,它将转到-float.MAX_值。有人知道如何解决这个问题吗?它把我努力完成的事情的结果

我正试图打印出我正在处理的方程的值。方程式为:

(2^k)/(k!)
我正在使用Java和浮动,但是当k变大时,我遇到了一个问题。当它变大时,方程的底部比顶部大得多。你可以想象方程的极限是0。但是当这个数字变小时,它会通过
1*10^-31
,一旦它似乎通过了这个值,浮点值就会增加。我假设这个数字太小,一旦它通过
10^-31
Java就会做出反应,使它成为一个更大的值。类似于如果浮点值超过
float.MAX_值
,它将转到
-float.MAX_值
。有人知道如何解决这个问题吗?它把我努力完成的事情的结果搞砸了

谢谢。

让我们看看
(2^k)/(k!)
。对于k=1,我们有:

2/1
对于k=2,我们有

2/1 * 2/2
对于k=3,我们有

2/1 * 2/2 * 2/3

等等。请注意,根本不需要实际计算全分母。

如果您真的需要计算那么大的值,那么使用
biginger
类或
BigDecimal
如何?问题是它不是“那么大”的值,而是“那么小”的值。此外,我还使用Java的图形库来绘制方程值大小的线。所以我需要能够画出这个值,这是一个我需要处理的任务。我画的是方程结果在k的长度。我不知道你说的没有必要计算k是什么意思。是的,有,我需要这个方程,就像上面说的。。。我从1到n运行k,其中n是指定的任何值。我误解了,我以为你说的是k!可以简化。你的意思是简化最终结果,我的意思是你可以任意计算最终结果。不要选择最坏的方式。你可以按照你喜欢的任何顺序或组合进行乘法和除法。对,我只是不想看方程的结果,然后把它简化。谢谢