python - 使用xlrd从xls获取 float

标签 python excel floating-point xlrd

我正在开发一个 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/

相关文章:

python - 排名逆权重类似于 pandas.ewm()

python - 如何将第一列的值添加到新数组?

像 goto 函数一样运行的 VBA 代码 : "Ctrl-[" and "F5"

c++ - 有可能将两个从 unsigned int 转换为负 float 的 float 相除吗?

assembly - V*** 和 F*** 浮点 ARM 指令有什么区别?

python - pandas.Series/DataFrame.fillna 限制中的错误?

python - 如果我有 Anaconda,如何通过双击运行 .py 文件?

excel - 在vba中寻找更有效的算法来评估指数增长的组合问题

通过 VBA 更改行高从 Access 导出 Excel

java - 十六进制 -> float 转换不准确