如何从浮点数中删除最左边的数字?

How do I drop leftmost digits from a float?

我试图使用 Python.

在 bash shell 中打印出亚秒计时

这与how-to-get-execution-time-of-a-script-effectively有些关系。我在 macOS 上,bash 那里没有提供亚秒级计时。

如果我使用 python -c 'from time import time; print(f"{time():.3f}")' 例如我得到:

1603052253.465

python -c 'from time import time; print(f"{time():4.3f}")' 具有相同的输出行为。

现在,这很吵。我真的不需要看到所有最左边的数字来逐步观察执行时间。

我写了一个新脚本,它做得更好:

$ time4bash.py

 2325.987

$ time4bash.py

 2328.201


但是执行此操作的代码比我希望的要复杂一些。

from time import time
time_ = time()
stime = f"{time_:.3f}"

#look for decimal separator, and this will break on `,` locales
pos = stime.index(".")
tstime = stime[pos-4:]

print(tstime)

是否有使用字符串格式标志或模数学的更好方法?

在使用 .3f:

格式化之前,只需计算余数模 10,000
>>> t = time.time()
>>> t
1603052957.262341

>>> t % 10000
2957.2623410224915

>>> '{:.3f}'.format(t % 10000)
'2957.262'

或将所有内容放在一行中:

print('{:.3f}'.format(time.time() % 10000))

如果你只想将时间转换为小时、分钟、秒,你可以尝试这样的方法。

time.strftime("%H:%M:%S", time.gmtime())

这将 return:

'20:42:13'

您还可以使用以下方式获取当地时间:

time.strftime("%H:%M:%S", time.localtime())

这将 return:

'13:47:54'