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 サイトの他の関連記事を参照してください。