4
>>> str(1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702)
'1.41421356237'

str() でより多くの数字を文字列に記録する方法はありますか? デフォルトで切り捨てられる理由がわかりません。

4

4 に答える 4

5

Python の浮動小数点数は、64 ビットの倍精度のみを使用します。それらは、表示されているよりも(大幅に)多くの数字を表すことはできません。

さらに必要な場合は、組み込みのdecimalモジュールまたはmpmathパッケージを参照してください。

于 2013-06-10T18:31:33.183 に答える
2

これを試して:

>>> from decimal import *
>>> Decimal('1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702')
Decimal('1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702')

デフォルトでは、floatリテラルは、使用可能なスペースに収まるように切り捨てられます (つまり、 が原因ではありませんstr)。

>>> 1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702
1.4142135623730951

小数点以下の桁数がさらに必要な場合は、decimal代わりに使用してください。

于 2013-06-10T18:31:45.047 に答える
1

Python コンパイラが切り詰めています。float リテラルの精度は、C の double で表現できる精度よりも高くなっています。さらに精度が必要な場合は、最初に数値を文字列として表現します。

于 2013-06-10T18:32:10.167 に答える