gpt4 book ai didi

python - 防止四舍五入到小数点后两位

转载 作者:行者123 更新时间:2023-11-28 16:25:40 24 4
gpt4 key购买 nike

我已经编写代码好几天了,老实说,我的头发已经所剩无几了……我到处搜索,包括 stackoverflow,但似乎找不到任何符合我困境的东西。

我在 Mint 17.3 上使用 python 2.7.6。我需要使用至少毫秒精度的日期/时间。以整秒为单位处理日期和时间是相当微不足道的,但是当你以毫秒或微秒为单位时,它就变成了一个完全不同的球赛。最终,我需要遍历日志文件并根据特定条件,我需要找到两行的日期/时间之间的差异,精度至少为毫秒。在这种仓库输送机情况下,在涉及服务器、PLC 和扫描仪的地方,精度确实很重要。日志文件日期/时间的格式如下:

12-Apr-2016 23:59:59.720321

我认为处理此问题的最简单方法是将字符串转换为时间戳,然后添加微秒。我也不太确定我在这种情况下使用 strptime,因为我知道 timetuple() 无论如何都会去除任何分数,因此超出了要求。

无论如何,经过很多很多天的尝试,到目前为止我的代码如下:

def timestampthen(timestring):
tt = datetime.datetime.strptime(timestring, "%d-%b-%Y %H:%M:%S.%f").timetuple()
ut = float(calendar.timegm(tt))
dotpos = timestring.rfind(".")
frac = float(timestring[dotpos:])
utfloat = float(ut + frac)
return utfloat

在一个例子中,ut =1460505599.0 和 frac = 0.720321,但 utfloat = 1460505599.72

我知道我可以使用格式和 %f,但我使用的是 float 而不是字符串。上面的代码工作正常,但为什么当 float 为 6 或更多时,它会以 2 位小数点精度返回?我需要更多。请为我指明正确的方向,我将不胜感激。

最佳答案

实际是全精度的,所以算术上没有问题。

问题是默认情况下,print 显示变量的舍入 str 而不是其完整精度 repr:

>>> ut = 1460505599.0; frac = 0.720321;
>>> ufloat = ut + frac
>>> print str(ufloat)
1460505599.72
>>> print repr(ufloat)
1460505599.720321

因此,您的问题的解决方案就是打印浮点值的 repr,以便它能够完全精确地显示。希望这会有所帮助:-)

关于python - 防止四舍五入到小数点后两位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36977975/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com