在我的调试器中,我可以看到以下值:
float min = -3.1931721E38
float max = 3.3434891E38
float temp = (max-min);
这就导致了无穷大。为什么?(2-2^23)·2^127比温度变量大,对吗?
发布于 2014-11-04 19:30:02
这一减法的数学结果大于最大可能的Float
值Float.MAX_VALUE
。Java遵循IEEE浮点算法的规则,这将导致Infinity
.
如果需要结果,则可以使用double
s,后者具有更高的精度和更大的有效值范围。
发布于 2014-11-04 19:30:08
来自Java语言规范
浮点乘法的结果由IEEE 754算法的规则决定:
发布于 2014-11-04 19:32:25
Float
值仅为32位(或4个字节)。因此,您使用的容器太小,无法进行计算。然后缓冲区溢出。
尝试使用更大的数据结构,比如double
,它是一个64位(或8个字节)的容器。
https://stackoverflow.com/questions/26743383
复制相似问题