【发布时间】:2012-01-17 07:43:18
【问题描述】:
我有一本要写入 csv 文件的字典,但是当我将字典中的浮点数写入文件时,它们会被四舍五入。我想保持最大精度。
四舍五入发生在哪里,如何防止?
我做了什么
我关注了DictWriter example here,我在 Mac 上运行 Python 2.6.1(10.6 - Snow Leopard)。
# my import statements
import sys
import csv
这是我的字典 (d) 包含的内容:
>>> d = runtime.__dict__
>>> d
{'time_final': 1323494016.8556759,
'time_init': 1323493818.0042379,
'time_lapsed': 198.85143804550171}
这些值确实是浮点数:
>>> type(runtime.time_init)
<type 'float'>
然后我设置我的作家并编写标题和值:
f = open(log_filename,'w')
fieldnames = ('time_init', 'time_final', 'time_lapsed')
myWriter = csv.DictWriter(f, fieldnames=fieldnames)
headers = dict( (n,n) for n in fieldnames )
myWriter.writerow(headers)
myWriter.writerow(d)
f.close()
但是当我查看输出文件时,我得到了四舍五入的数字(即浮点数):
time_init,time_final,time_lapsed
1323493818.0,1323494016.86,198.851438046
【问题讨论】:
-
不是您的问题,但在 Python 2.x 中始终以 binary 模式打开 csv 文件(
'rb'或'wb') -
感谢您的提醒和审查我的问题。 +1
标签: python file-io csv floating-point rounding