10

私は非常に多くの小数点以下の桁数(14または15程度)を評価する必要があるpythonコードを書いています。

たとえば、スムーズに増加する結果を期待しています。

0.123456789101997
0.123456789101998
0.123456789101999
0.123456789102000
0.123456789102001

しかし、私は数字を(印刷すると)小数点以下12桁までしか取得していないように見えるため、実際には数字が段階的にジャンプしています:

0.123456789101
0.123456789101
0.123456789101
0.123456789102
0.123456789102

最初は、数字が舞台裏でより多くの小数点以下の桁数にリストされていると思っていましたが、12 に印刷されただけでしたが、結果を印刷すると、滑らかではなく段階的にプロットされているようです。

これを修正するために誰かが私を正しい方向に向けてくれたら本当に感謝しています - ありがとう。

4

7 に答える 7

13

Decimal モジュールを試してみませんか?

In [2]: import decimal

In [3]: d = decimal.Decimal('0.123456789101997')

In [4]: print d
0.123456789101997
于 2012-12-27T16:32:10.823 に答える
10

repr()printusesはstr()、出力をユーザーフレンドリーにするために小数点以下の桁数を12に減らします。

In [17]: a=0.123456789101997

In [18]: str(a)
Out[18]: '0.123456789102'

In [19]: repr(a)
Out[19]: '0.123456789101997'

または文字列のフォーマット:

In [21]: "{0:.15f}".format(a)
Out[21]: '0.123456789101997'
于 2012-12-27T16:36:06.227 に答える
1

精度を高めるためにDecimalを使用できます。

于 2012-12-27T16:31:56.327 に答える
1

より多くの小数点を表示するには、これをコードの最後に追加します。

print('%.60f' % value_x)

".60" は表示する小数点以下 60 桁を示し、"value_x" は表示する値を表します。

これは、科学表記法のデフォルト出力に加えて、P 値を実数の 10 進数として出力する必要がある場合に使用します。

例:

In [1]: pearson_coef, p_value = stats.pearsonr(df['horsepower'], df['price'])
In [2]: print("The Pearson Correlation Coefficient is", pearson_coef, " with a P-value of P = ", p_value, "or ")
In [3]: print('%.50f' % p_value)
Out [4]: The Pearson Correlation Coefficient is 0.8095745670036559  with a P-value of P = 6.369057428260101e-48 or 0.00000000000000000000000000000000000000000000000637
于 2020-10-16T01:19:29.137 に答える