在java中将float值乘以-1

时间:2013-07-04 05:27:26

标签: java floating-point multiplication

当0.0乘以-1时,为什么我得到-0.0 ??? 我把0.0作为浮动

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

输出显示在-0.0而不是0

3 个答案:

答案 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浮点中的零不仅仅代表实数零。它们用于表示绝对幅度太小而不能表示为非零数字的每个数字,每个下溢结果。

类似地,无穷大不仅代表除零的结果,而且代表绝对幅度太大而不能表示为有限数的每个结果。

使用零签名允许区分正下溢结果和负下溢结果,包括,如在另一个答案中已经说明的那样,通过下溢结果获得非零数除法的正确无穷大。