Java Double で小数点以下の桁を正確に移動するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-26 04:00:13
オリジナル
959 人が閲覧しました

How Can I Accurately Move Decimal Places in a Java Double?

Double での小数点以下の桁の移動

浮動小数点数を扱う場合、数値を正確に表現することがしばしば課題になります。特に、Double には、小数を正確に表現する際に制限があります。

Double を 1234 に設定し、小数点以下の桁を 2 回移動して 12.34 を取得することを目指すシナリオを考えてみましょう。一般的なアプローチは、提供されたコード スニペットに示すように、1234 に 0.1 を 2 回乗算することです:

double x = 1234;
for(int i=1;i<=2;i++)
{
  x = x*.1;
}
System.out.println(x);
ログイン後にコピー

ただし、この方法では丸め誤差が生じ、出力に示されているように、値が "12.340000000000002" になります。 .

達成中精度

12.34 の値を正確に保存するには、乗算で 0.1 を使用しないことが重要です。代わりに、double で正確に表現できる 100 を使用することを検討してください。

double x = 1234;
x /= 100;
System.out.println(x);
ログイン後にコピー

この変更されたアプローチでは、小数点以下の桁が効果的に 2 回移動され、目的の値 12.34 が得られます。

精度浮動小数点演算

倍精度には制限があるため、明示的に丸めなくても、一部の丸め誤差が発生します。避けられない。より正確な演算を行うには、より正確な 10 進表現を提供する BigDecimal の使用を検討することをお勧めします。

四捨五入の違い

四捨五入を扱うときは、100 で割って 0.01 を掛けることに注意することが重要です。 0.01.

に関連付けられた固定丸め誤差により、わずかに異なる結果が得られます。

以上がJava Double で小数点以下の桁を正確に移動するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート