浮動小数点数は任意の精度を提供できますか?
Python では、浮動小数点数には精度の制限があります。この制限により、Python コードが特定の大きなグラフト数を識別できないことに関して疑問が生じました。ユーザーは C プログラムを使用してこの動作を検証しようとしましたが、同様の結果が観察されました。
Python の制限:
Python の浮動小数点実装では末尾のビットが切り捨てられ、損失が発生します。特定の操作における精度の低下。その結果、コードでは 9999999998 のような数値が欠落します。これはグラフト番号であるはずですが、切り捨てにより失われます。
代替オプション:
Python では、次のような代替モジュールが提供されています。 10 進数と mpmath は、数学的演算の精度を高めます。ただし、これらのモジュールの特定の関数は、標準数学モジュールの対応する関数と必ずしも一致するとは限りません。
たとえば、math.sqrt と dicial.sqrt は、高精度の値に対して異なる結果を提供する場合があります。
>>> from decimal import * >>> from math import sqrt >>> getcontext().prec = 30 >>> num = Decimal(1) / Decimal(7) >>> print(" math.sqrt:", Decimal(sqrt(num))) >>> print("decimal.sqrt:", num.sqrt()) math.sqrt: 0.37796447300922719758631274089566431939601898193359375 decimal.sqrt: 0.377964473009227227214516536234
推奨事項:
このような精度要件に対処するには、外部の使用を検討してください。 GMP などのライブラリ、または任意精度演算の組み込みサポートを提供する C/C などの言語に切り替える。
以上が浮動小数点数は Python やその他の言語で任意の精度を提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。