私は0.9000000000000004予期しない小数結果
なぜそれがそうであるように私は、p/oを取得しています
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10.00 - 9.10);
}
}
..次のコードを実行されますが、その結果を期待していませんでしたか?
私は0.9000000000000004予期しない小数結果
なぜそれがそうであるように私は、p/oを取得しています
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10.00 - 9.10);
}
}
..次のコードを実行されますが、その結果を期待していませんでしたか?
これは、10進値をfloatまたはdoubleで正確に表すことができないためです。
1つの提案:正確な回答が必要な場合は、浮動小数点数と2倍を避けてください。使用のBigDecimal、int型、または長い代わりに
のint使用:
public class SampleDemo {
public static void main(String args[]) {
System.out.println(10 - 9);
}
}
// Output : 1
のBigDecimalを使用する:
import java.math.BigDecimal;
public class SampleDemo {
public static void main(String args[]) {
System.out.println(new BigDecimal("10.00").subtract(new BigDecimal("9.10")));
}
}
// Output : 0.90
この種の精度が必要な場合は、[BigDecimal](http://download.oracle.com/javase/6/docs/api/java/math/BigDecimal.html)を参照してください。スケール、丸みを帯びた政治などをより詳細に制御することができます。 –
はい、@Anthony +1私は自分の答えに加えました。 :) –
そこ側のすべてのそれらの関連した質問を読みます - - > http://stackoverflow.com/questions/5076710/what-is-float -in-java –
[浮動小数点演算へようこそ](http://programmers.stackexchange.com/questions/62948/what-can-be-done-to-programming-languages-to-avoid-floating-point-落とし穴):) –