Java浮点减法是无穷大吗?
在我的调试器中,我可以看到以下值:Java浮点减法是无穷大吗?,java,floating-point,floating-accuracy,floating-point-precision,Java,Floating Point,Floating Accuracy,Floating Point Precision,在我的调试器中,我可以看到以下值: float min = -3.1931721E38 float max = 3.3434891E38 float temp = (max-min); 这将导致无穷大。为什么呢?(2-2^23)·2^127大于温度变量right?此减法的数学结果大于可能的最大浮点值。Java遵循IEEE关于浮点运算的规则,这会导致无穷大 如果您想要得到结果,则可以使用双精度s,它具有更高的精度和更大的有效值范围。此减法的数学结果大于最大可能的浮点值。Java遵循IEEE关于
float min = -3.1931721E38
float max = 3.3434891E38
float temp = (max-min);
这将导致无穷大。为什么呢?(2-2^23)·2^127大于温度变量right?此减法的数学结果大于可能的最大浮点值。Java遵循IEEE关于浮点运算的规则,这会导致
无穷大
如果您想要得到结果,则可以使用双精度
s,它具有更高的精度和更大的有效值范围。此减法的数学结果大于最大可能的浮点
值。Java遵循IEEE关于浮点运算的规则,这会导致无穷大
如果希望得到结果,则可以使用双精度
s,它具有更高的精度和更大的有效值范围。来自
浮点乘法的结果由IEEE 754算术规则确定:
- [……]
- 如果乘积的大小太大而无法表示,我们称操作溢出结果是相应符号的无穷大李>
- [……]
- 如果乘积的大小太大而无法表示,我们称操作溢出结果是相应符号的无穷大李>
Float
值仅为32位(或4字节)。因此,您使用的容器对于可计算的答案来说太小了。然后缓冲区溢出
尝试使用更大的数据结构,如双精度
double
,它是一个64位(或8字节)的容器aFloat
值仅为32位(或4字节)。因此,您使用的容器对于可计算的答案来说太小了。然后缓冲区溢出
尝试使用更大的数据结构,如双精度的数据结构,它是一个64位(或8字节)的容器。没有人回答您的实际问题,“(2-2^23)·2^127比temp变量大,对吗?”。答案是否定的(你指的是2^-23)。没有人回答你的实际问题,“(2-2^23)·2^127比温度变量大,对吗?”。答案是否定的(你的意思是2^-23)。