当0.0乘以-1时,为什么我得到-0.0 ??? 我把0.0作为浮动
sign=-1;
float output=0.0;
JOptionPane.showmessagedialog(null,0.0*sign);
输出显示在-0.0而不是0
答案 0 :(得分:3)
这是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
答案 1 :(得分:1)
浮点值具有正零和负零。它可能看起来古怪,但它有一个很好的理由(考虑到浮点数的代表性限制)。
如果你真的希望答案只是int
,你可以考虑将结果投射到0
。
答案 2 :(得分:1)
Java浮点中的零不仅仅代表实数零。它们用于表示绝对幅度太小而不能表示为非零数字的每个数字,每个下溢结果。
类似地,无穷大不仅代表除零的结果,而且代表绝对幅度太大而不能表示为有限数的每个结果。
使用零签名允许区分正下溢结果和负下溢结果,包括,如在另一个答案中已经说明的那样,通过下溢结果获得非零数除法的正确无穷大。