ナノ秒で現在の時刻が必要です。 文字列"%.9f" % float_time
は、1502872986.6536936 です。あなたは最後に76を見ることができます。 int(float_time*10**9)
と同じ時刻を書き込もうとすると、最後には15028729866536936 と96になります。どうして?そして、それはナノフォーマットを得るための正しい方法ですか?文字列とint形式の浮動小数点の違い。どうして?
from time import time
float_time = time()
print("float_time:", float_time)
int_nano_time = int(float_time*10**9)
print("int_nano_time:", int_nano_time)
str_nano_time = "%.9f" % float_time
print("str_nano_time:", str_nano_time)
float_time:1502872986.6536937
int_nano_time:1502872986653693696
str_nano_time:1502872986.653693676
ソリューション:
time.monotonic()
float_time:536596.296
int_nano_time:5365962.96億
str_nano_time:536596.296000000
[pythonはIEEE-754倍精度を使用します](https://docs.python.org/3.3/tutorial/floatingpoint.html)ので、有効数字部分にわずか53ビットあり、小数点は15〜17桁です(1502872986.6536936残りはちょうどノイズです) –
@Eleena返される 'time()'はナノ秒の精度には正しくない可能性が非常に高いです。 –
@AnttiHaapalaは、Pythonでintでnanosecを取得することは可能ですか? C++の世界では、64ビット整数で取得するので、問題はありません。彼らはIEEE754を満たしていません。 – Elena