Float を Double に変換すると精度が低下するのはなぜですか? 精度を維持するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-11-02 21:20:02
オリジナル
966 人が閲覧しました

Why Does Converting a Float to Double Lose Precision, and How Can I Maintain Accuracy?

Float を Double に変換する際の精度の維持

プリミティブ float をプリミティブ Double に変換する場合、次の理由により精度の不一致が発生する可能性があります。浮動小数点演算の固有の性質。提供されたコードに示すように、単純に float を double にキャストすると、望ましくない丸めエラーが発生する可能性があります。

<code class="java">float temp = 14009.35F;
System.out.println(Float.toString(temp)); // Prints 14009.35
System.out.println(Double.toString((double)temp)); // Prints 14009.349609375</code>
ログイン後にコピー

ただし、float を文字列に変換し、それを double として解析すると、必要な精度が得られます。

<code class="java">System.out.println(Double.toString(Double.parseDouble(Float.toString(temp))));
// Prints 14009.35</code>
ログイン後にコピー

float から double への直接キャストの一見余分な精度は、実際の精度の向上ではないことに注意することが重要です。 double 表現は、float 値の固有の精度を正確に反映します。文字列に変換して戻すと表現が簡素化され、元の float よりも文字列表現に近い double 値が得られます。

この回避策に頼る前に、float データ型と double データ型の使用の適切さを検討してください。金融アプリケーションや科学アプリケーションなど、正確な 10 進数値が重要な場合は、10 進計算の精度と制御が向上するため、BigDecimal をより適切な型として推奨します。

以上がFloat を Double に変換すると精度が低下するのはなぜですか? 精度を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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