【问题标题】:Excel rounds the number when transferring from pandas从 pandas 传输时 Excel 将数字四舍五入
【发布时间】:2022-01-11 08:53:58
【问题描述】:

创建一个浮点数据框。以下是 pandas 的输出:

   print(hh.iloc[2][Number])
   >>1028112000000713.0

这就是 excel 的输出:

1028112000000710

输出代码到excel:

    xl = pd.ExcelWriter('gg.xlsx', engine='xlsxwriter')
    df.to_excel(
            xl,
            sheet_name='ww',
            index=False)

我试过了:

    wb = xl.book
    ws = xl.sheets['ww']

    form = wb.add_format()
    form.set_num_format('################')
    ws.set_column('D:D', 18, form)

但是没用

excel为什么要四舍五入?如何解决?

【问题讨论】:

    标签: python excel pandas


    【解决方案1】:

    我认为 Excel 不能存储超过 15 个重要位置。看到这个link

    精度的位数也限制了数字的准确性。 Excel 存储 15 位有效数字的精度。例如,如果使用 15 位精度,则数字 1234567890123456 无法精确表示。

    您的号码有 16 个位置。

    这总是在 Excel 中发生。 Pandas 或 Python 将值写入 Excel 不是问题。您可以按如下方式检查:

    1. 打开 Excel 并将此数字 1234567890123456789 写入单元格中。
    2. 按回车
    3. 你会看到它显示了这个 1234567890123450000

    【讨论】:

    • 我在dataframe中把格式改成了obejct,但还是圆了
    • 有道理。这是 excel 的工作方式
    猜你喜欢
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-17
    • 2021-08-10
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多