2

足し算の出力を小数点以下 2 桁まで表示しようとしています。

import time
import random

max_number = 1000000.0
random_time = random.randrange(1, max_number-1) / max_number
range_key = int(time.time()) + random_time

range_key
>>> 1347053222.790799

print range_key
>>> 1347053222.79

番号全体を印刷するにはどうすればよいですか? これが関数である場合、どうすれば完全な数を返すことができますか?

4

4 に答える 4

5

フロートを文字列に変換するとき (表示はこれを自動的に行います)、python はそれを最上位 12 桁と小数点に制限します。

関数から数値を返すときは、常に完全な精度が得られます。

より多くの数字を出力するには (利用可能な場合)、文字列の書式設定を使用します。

print '%f' % range_key  # prints 1347053958.526874

デフォルトは 6 桁ですが、さらに精度を指定できます。

print '%.10f' % range_key  # prints 1347053958.5268740654

別の方法として、python は新しい文字列フォーマット方法も提供しています:

print '{0:.10f}'.format(range_key)  # prints 1347053958.5268740654
于 2012-09-07T21:33:32.303 に答える
3

あなたはすでに完全な数を持っています。出力でカスタム書式指定子を使用します。

>>> print '%.15f' % range_key
1347053222.790798902511597
于 2012-09-07T21:33:22.687 に答える
0

印刷する桁数をハードコーディングすると、数が少なすぎたり、悪化したりしても、浮動小数点の精度を超えて、最後に意味のない桁が表示される場合があります。標準の浮動小数点数の精度は約15桁です。次の簡単な式で、小数点の右側にある数字の数を確認できます。

digits_right = 14 - int(math.log10(value))

%fこれを使用して、適切な形式を作成できます。

fmt = '%%0.%df' % max(0, digits_right)
于 2012-09-07T22:02:13.070 に答える
0
>>> f = 1/7.
>>> repr(f)
'0.14285714285714285'
>>> str(f)
'0.142857142857'
>>> f
0.14285714285714285
>>> print f
0.142857142857
>>> '%.15f' % f
'0.142857142857143'
于 2012-09-07T22:02:58.483 に答える