ホームページ >バックエンド開発 >C++ >倍精度では、一部の繰り返し小数に対して小数点以下 17 桁が表示されるのはなぜですか?

倍精度では、一部の繰り返し小数に対して小数点以下 17 桁が表示されるのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-03 07:40:09378ブラウズ

Why Does Double Precision Show 17 Decimal Places for Some Repeating Decimals?

倍精度: 10 進表現の精度を探る

倍精度はプログラミングで一般的に使用されるデータ型で、10 進数で約 15 の精度が保証されています。場所。ただし、1.0/7.0 などの繰り返し小数として表される値を扱う場合、異常が発生します。

なぜ小数点以下 17 桁なのか?

内部的に、倍精度数値は 53 桁を持っています。有効ビットは、10 進数で約 15.95 桁に変換されます。これにより、理論的には小数点以下 16 桁の表現が得られるはずですが、実装では 15 桁に切り捨てられます (DBL_DIG で示されます)。

例として、 nextafter() 関数を使用すると、指定された値に隣接する最も近い表現可能な数値を明らかにできます。 1.0/7.0 (0.14285714285714285) に適用すると、小数点以下 17 桁が表示されます。最後の桁の変化は、表現の実際の精度を示します。

精度と確率

1.0/7.0 の場合、最後に表示された桁が偶然一致します。数学的値 (5)。ただし、他の繰り返し小数 (1.0/3.0 など) では、最後の桁が整列しない場合があり、正確な 10 進数表現の限界が示されています。

以上が倍精度では、一部の繰り返し小数に対して小数点以下 17 桁が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。