openxml和Excel 15位数字限制

我正在使用从Apache的POI从一个Java程序中的Excel文件中读取。 excel有我在Java中复制的macros,但是当我比较结果时,我试图尽可能地根除小的舍入差异。 在下载POI 3.13的代码并在debugging模式下运行之后,我意识到他们没有处理像Excel这样的数字,它只使用了15位数字,之后添加了非重要的0,而是使用17位数的表示。 你可以在这里看到。 但更深入的,似乎POI使用openxml和openxml单元格已经存储在17个数字而不是15浮点数…所以在我看来,在openxml中处理数量有一个错误,但我很惊讶那些“大”的处理浮点数的东西以前没有被发现过,因为我找不到任何关于这个的东西。

所以我的问题:是否有一个解决scheme,以获得完全相同的15位数字的Excel使用兴趣点? 而且更好的办法就是可以在这个问题上改正Excel的行为?

但是我很惊讶,以前没有发现过像处理浮点数那样“大”的东西

Excel对浮点的使用是错误的,正如本文第2节所详述的。 微软试图假装数值是15位十进制浮点数的时候,它们只是53位数的二进制浮点数,这只会让事情变得更糟,而不是模拟它,你应该避免使用Excel进行严肃的计算。 以下是第2节结论的引用:

Excel的用户如何预测显示的是哪个函数而不是实际的值? 在显示之前,哪些表情会变成美观? 如果不了解这些问题,用户的程序就不能被debugging,而知晓的用户最终会debugging微软的虔诚的欺诈,而不是仅仅是一个错误的Excel电子表格。