Java的浮点减法是无穷大的



在我的调试器中,我可以看到以下值:

float min = -3.1931721E38
float max = 3.3434891E38
float temp = (max-min);

这导致了无穷大。为什么?(2-2^23)·2^127大于温度变量,对吗?

此减法运算的数学结果大于最大可能的FloatFloat.MAX_VALUE。Java遵循IEEE关于浮点运算的规则,这导致了Infinity

如果您想要结果,那么您可以使用doubles,它具有更高的精度和更大的有效值范围。

来自Java语言规范

浮点乘法的结果由IEEE 754算术规则确定:

  • […]
  • 如果乘积的大小太大而无法表示,我们称运算溢出则结果是适当符号的无穷大

Float值只有32位(或4个字节)。因此,对于可计算的答案来说,您使用的容器太小了。然后缓冲区溢出。

尝试使用更大的数据结构,如double,它是64位(或8字节)的容器

相关内容

  • 没有找到相关文章

最新更新