0

我已经编写了一个服务器和一个客户端Java,它在我自己的笔记本电脑上运行良好,这是一个 Windows vista 商业版,但是当我在其他版本的 Windows 中运行它时,比如 XP(我什至没有改变平台)我得到了不同程序的数学部分中完全相同的程序的结果。有什么问题,如何以最简单的方式解决?

如果我在 Windows XP 中运行,结果会是这样,-6.2579985891243E-310但如果在 Windows vista 商业版中,结果会是这样的一半,我不确定在 windows vista 上的确切结果,因为我现在无法访问它来运行程序并得到反对它的结果。

结果是通过运行一个正态分布库来计算一些值的正态密度,然后用一些其他值减去它(所有值都在 中double)。我使用的图书馆是这个

两个操作系统的架构都是 32 位的,并且都使用 jdk 1.6

4

1 回答 1

2

这种影响可能是由于浮点舍入行为的非常小的差异。这可能是由于处理器的差异、编译器的不同指令顺序优化、数学库实现中的错误等造成的。

您不太可能解决上述所有问题(即使专家也很难做到正确!) - 所以我建议您以不依赖于确切浮点行为的方式编写代码。

例如,您应该检查两个数字是否在一个小范围内(例如 1*e-10),而不是对浮点数进行相等测试

于 2012-05-08T07:36:14.860 回答