精度エラーを修正するための最良の方法はJavaにあると思います。次の例でわかるように、精度エラーがあります。
class FloatTest
{
public static void main(String[] args)
{
Float number1 = 1.89f;
for(int i = 11; i < 800; i*=2)
{
System.out.println("loop value: " + i);
System.out.println(i*number1);
System.out.println("");
}
}
}
表示される結果は次のとおりです。
ループ値:11
20.789999
ループ値:22
41.579998
ループ値:44
83.159996
ループ値:88
166.31999
ループ値:176
332.63998
ループ値:352
665.27997
ループ値:704
1330.5599
また、誰かがなぜそれが11から始まり、毎回値を2倍にするのかを説明できる場合。他のすべての値(または少なくともそれらの多く)は正しい結果を表示したと思います。
このような問題により、以前は頭痛の種でしたが、通常は数値フォーマッターを使用するか、ストリングを文字列に入れます。
編集:人々が述べたように、私は倍精度浮動小数点数を使用することもできますが、それを試した後、倍精度浮動小数点数792として1.89がまだエラーを出力するようです(出力は1496.8799999999999です)。
BigDecimalなどの他のソリューションを試してみると思います
精度を重視する場合は、BigDecimalを使用する必要があります
http://download.oracle.com/javase/1,5.0/docs/api/java/math/BigDecimal.html
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加