float を double に変換すると精度が向上するように見えるのはなぜですか?

Susan Sarandon
リリース: 2024-11-03 06:03:02
オリジナル
398 人が閲覧しました

Why Does Converting a Float to a Double Seem to Increase Precision?

数値精度の維持: Float から Double への変換

プリミティブ データ型を扱う場合、精度を確保することが重要です。 float を double に変換すると、意図しない丸めエラーが発生する場合があります。次の例で示すように、float を double に直接キャストすると、予期しない追加の精度が得られる可能性があります。

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

この見かけ上の「余分な」精度は、変換中に実際には得られません。その代わり、float は意図した数値を正確に表していませんでした。一方、double は元の float の値を正確に反映します。文字列に変換すると、double は float に存在していた「隠された」データを明らかにします。

次の例を考えてみましょう:

float f = 0.1F;
double d = f;
ログイン後にコピー

f の値は、正確に 0.100000234523 である可能性があります。 d は同じ値を持ちますが、文字列に変換すると、より高い精度で表示され、すでに存在していた「余分な」数字が表示されます。

文字列に変換して元に戻すと、倍精度の値に近づきます。元の浮動小数点数よりも文字列表現に変更されます。ただし、これは、文字列値が意図した数値を本当に表す場合にのみ有益です。

このシナリオでは、BigDecimal がより適切なデータ型であるかどうかを検討する価値があります。 BigDecimal は正確な 10 進数値用に特別に設計されており、必要な表現を正確に操作できるようになります。

以上がfloat を double に変換すると精度が向上するように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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