0

为什么当0.0乘以-1时我得到-0.0???我已将 0.0 作为浮点数

sign=-1;
float output=0.0;
JOptionPane.showmessagedialog(null,0.0*sign);

输出显示为 -0.0 而不是 0

4

3 回答 3

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 
于 2013-07-04T05:32:57.820 回答
1

浮点值有正零和负零。它可能看起来很古怪,但有一个很好的理由(考虑到浮点数的表示限制)。

int如果您真的希望答案只是,则可以考虑将结果转换为0

于 2013-07-04T05:33:27.930 回答
1

Java 浮点中的零不仅仅代表实数零。它们用于表示绝对幅度太小而无法表示为非零数的每个数字,每个下溢结果。

类似地,无穷大不仅表示除以零的结果,还表示绝对量值太大而无法表示为有限数的每个结果,每个溢出结果。

零符号允许区分正下溢结果和负下溢结果,包括,如另一个答案中所述,在非零数除以下溢结果时获得正确的无穷大。

于 2013-07-04T08:21:34.667 回答