我的 Excel 工作表中的 double 值有一个小问题。
double 值是宏计算的结果。
它在单元格中显示为 1.0554
。
单元格格式为数字,显示 4 位小数。如果我选择更多小数,则会显示尾随 0(例如 1.05540000
)。
我的问题是我正在使用 jxls(使用 Apache POI)读取此文件,并且我得到的值不是 1.0554
而是 1.0554000000000001
(最后 1 位于第 16 位)。
我已将 xls 转换为 xlsx,直接在 xlsx(这是一个包含 xml 文件的 zip 文件,即 ascii 文件)内部检查,保存的值为 1.0554000000000001
;但即使我将单元格格式设置为小数点后 32 位的数字,Excel 仍显示 1.0554000...000
且不带任何尾随 1。
所以我想在xls中,实数也保存为1.0554000000000001而不是1.0554。
那么如何在Excel中显示真实的原始值呢?或者强制Excel保存1.0554而不是1.05540000...01?或者用宏检查显示值不是原始值?...
最佳答案
你与 IEE754 诸神发生了冲突。 Double 值有 1 个符号位、11 位指数和 52 位尾数(实际表示有点复杂,但您应该从中了解到数字 1.0554 在 52 位内无法正确表达,因此 double您的 PC 的实现选择最接近的值。
关于java - Excel 中的 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324169/