0.0 に -1 を掛けると -0.0 になるのはなぜですか? 私は 0.0 を float として取りました
sign=-1;
float output=0.0;
JOptionPane.showmessagedialog(null,0.0*sign);
0 ではなく -0.0 で表示される出力
0.0 に -1 を掛けると -0.0 になるのはなぜですか? 私は 0.0 を float として取りました
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 浮動小数点のゼロは、実数のゼロを表すだけではありません。これらは、絶対値が小さすぎてゼロ以外の数値として表すことができないすべての数値を表すために使用され、すべてのアンダーフロー結果を表します。
同様に、無限大はゼロによる除算の結果だけでなく、絶対値が大きすぎて有限数として表現できないすべての結果、すべてのオーバーフロー結果を表します。
ゼロ符号を付けると、別の回答で既に述べたように、アンダーフロー結果によるゼロ以外の数値の除算で正しい無限大を取得するなど、正のアンダーフロー結果と負のアンダーフロー結果を区別できます。