ApachePOI对读取的数值进行循环?

ApachePOI对读取的数值进行循环?,apache,apache-poi,rounding,Apache,Apache Poi,Rounding,我使用ApachePOI3.10-FINAL,在从excel工作表中读取数字时,我得到了一个非常奇怪的行为:实际上,0.001306上的cell.getNumericCellValue()的结果不是0.001306,而是:0.001305999999(!)。2587441349.95676变为2.5874413499567585E9 我尝试了许多不同的方法,比如在读取之前将单元格类型更改为“字符串”(无论如何,读取后数值会立即更改为字符串值…),或者使用getRawValue()方法,但如果值是

我使用ApachePOI3.10-FINAL,在从excel工作表中读取数字时,我得到了一个非常奇怪的行为:实际上,0.001306上的cell.getNumericCellValue()的结果不是0.001306,而是:0.001305999999(!)。2587441349.95676变为2.5874413499567585E9

我尝试了许多不同的方法,比如在读取之前将单元格类型更改为“字符串”(无论如何,读取后数值会立即更改为字符串值…),或者使用getRawValue()方法,但如果值是好的,则格式不是:0.001306变为1.306E-3,我不能应用格式规则,因为没有真正的格式规则,唯一的规则是:它必须与excel表格中的一样(一个值可以是00.001306,另一个值可以是1.306E-3…)

我试图用“格式单元格”按钮在excel工作表中进行更改,但没有任何更改。只有在数字前面加上不简单的引号时,才会将这些数字数据视为字符串值

而且。。。我不明白为什么,但似乎我是地球上唯一遇到这种问题的人


(很抱歉我的英语不好…

将评论推广到答案

欢迎来到这里!Excel
.xlsx
文件始终将其数字存储为浮点数的字符串表示形式,而
.xls
几乎在所有情况下都会存储,即使是对于简单的整数值

默认情况下,ApachePOI将返回存储在文件中的值。如果值在十进制浮点表示法中不精确,就像您的情况一样,您将返回不完全精确的值,就像在文件中一样


但是,如果您想要的是“一个看起来像Excel为该单元格显示的字符串”,那么Apache POI有一个方便的实用工具方法,可以根据应用于该单元格的格式规则为您进行取整/格式化。该类是,您需要的方法是

欢迎使用!如果您尝试在手机上使用,会发生什么情况?这会给出您期望的答案吗?…是的,非常感谢!