Tag: 浮点的

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的行为?

在Java中匹配Excel的浮点数

我在工作表1的左上方单元格中有一个单一数字的.xlsx电子表格。 Excel用户界面显示: -130.98999999999 这是在公式栏中可见的,即不受包含单元格设置显示的小数位数的影响。 这是Excel将为这个单元格显示的最准确的数字。 在底层的XML中,我们有: <v>-130.98999999999069</v> 当试图用Apache POI读取工作簿时,它通过Double.valueOf从XML中提供数字,并提供: -130.9899999999907 不幸的是,这与用户在Excel中可以看到的数字不同。 任何人都可以指向我的algorithm,以获得用户在Excel中看到相同的数字? 迄今为止,我的研究表明,Excel 2007文件格式使用IEE754浮点的稍微非标准版本,其中值空间不同。 我相信Excel的浮点数,这个数字是四舍五入的边界的另一边,因此出来,而不是向上舍入。