为什么当0.0乘以-1时我得到-0.0???我已将 0.0 作为浮点数
sign=-1;
float output=0.0;
JOptionPane.showmessagedialog(null,0.0*sign);
输出显示为 -0.0 而不是 0
为什么当0.0乘以-1时我得到-0.0???我已将 0.0 作为浮点数
sign=-1;
float output=0.0;
JOptionPane.showmessagedialog(null,0.0*sign);
输出显示为 -0.0 而不是 0
这是取自http://www.javawebtips.com/154041/的答案
"-0.0" Is produced when a floating-point operation results in a negative floating-point number so close to 0 that cannot be represented normally.
-2.0 / Float.POSITIVE_INFINITY -> -0.0
"-0.0" Is numerically identical to "0.0". However, some operations involving "-0.0" are different than the same operation with "0.0".
(-0.0) == 0.0 -> true
2.0 / (0.0) - Infinity
2.0 / (-0.0) ->-Infinity
浮点值有正零和负零。它可能看起来很古怪,但有一个很好的理由(考虑到浮点数的表示限制)。
int
如果您真的希望答案只是,则可以考虑将结果转换为0
。
Java 浮点中的零不仅仅代表实数零。它们用于表示绝对幅度太小而无法表示为非零数的每个数字,每个下溢结果。
类似地,无穷大不仅表示除以零的结果,还表示绝对量值太大而无法表示为有限数的每个结果,每个溢出结果。
零符号允许区分正下溢结果和负下溢结果,包括,如另一个答案中所述,在非零数除以下溢结果时获得正确的无穷大。