我正在开发一个 Python 脚本,它使用 xlrd
从 xls 文件中获取数据。但是,我无法弄清楚如何以与 Excel 文件中相同的精度打印 float 。
我尝试按照 https://stackoverflow.com/a/3481575/1296490 中的建议使用 repr但这仍然给出了与我想要的精度不同的精度。
例如,Excel 文件有一个值为 -1.62717010683527
的单元格,然后使用
str(worksheet.cell(i,j).value)
返回 -1.62717010684
,
而 repr( worksheet.cell(i,j).value)
返回 -1.6271701068352695
。
使用 str(Decimal(worksheet.cell(i,j).value))
生成 -1.6271701068352695095187044671547482721507549285888671875
以上都没有给我来自 Excel 的原始值。我必须处理很多这样的数字,每个数字在点后都有不同的位数,不适合使用 %.10f
等
最佳答案
Excel 中的精度限制为 15 位有效数字。
使用 str( "%0.15g"% cell.value )
实现你想要的:
g - 如果指数大于 -4 或小于精度,则与“e”相同,否则为“f”。
( http://docs.python.org/release/2.4.4/lib/typesseq-strings.html )
不要忘记 "%0.15"
中的 0.
。
关于python - 使用xlrd从xls获取 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9897385/