(更新)
这是我遇到的实际问题。请注意, round() 似乎并没有起到作用。
这是我的代码:
t0=time.time()
# stuff
t1=time.time()
perfdat={'et1' : round(t1-t0,6), 'et2': '%.6f'%(t1-t0)}
以及dict和json分别输出:
{'et2': '0.010214', 'et1': 0.010214000000000001}
{"et2":"0.010214","et1":0.010214000000000001}
(结束更新)
我有一个浮点值,它有很多我不需要的额外精度数字。有没有办法在格式化 json 字符串时截断这些数字?
如果我将值格式化为字符串,我可以获得所需的截断,但我想将值作为(截断的)数字传输。
import json
v=2.030000002
json.dumps({'x':v}) # would like to just have 2.030
'{"x": 2.030000002}'
s= '%.3f' % (v) # like this, but not as a string
json.dumps({'x' : s})
'{"x": "2.030"}'
最佳答案
将数字包装成一个float
:
>>> s = float('%.3f' % (v))
>>> json.dumps({'x' : s})
{"x": 2.03}
关于Python:在 json 中强制精度 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32145824/