我在Java中实现了一个基于Markov链的Excel公式编写的算法,并将结果与Jxl库进行比较。正如我所读到的,问题是两种语言的精度不同。实际上,它们仅将相同的结果返回到第二个十进制数字。有没有一种方法可以在Java中“模拟”Excel精度,以测试算法的行为是否完全相同?
您可以在此处找到Excel精度如何工作的分析:
https://community.oracle.com/thread/2053255?start=15&tstart=0
处理时似乎向下舍入第16个十进制数字。
有关模拟浮点精度的方法,请参阅此问题:
Matching Excel's floating point in Java
我想这一切都在一起意味着在内部,意味着在单个单元格的公式中,Excel使用正常的双精度。但是在设置单元格的值时,向下舍入16位小数。对于您的算法而言,无论何时将中间结果写入单元格,您都需要使用链接答案中的舍入方法。测试一下,对我来说,不清楚这些中间值是否需要四舍五入。