不同操作系统的不同结果

时间:2012-05-08 06:52:50

标签: java client-server

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

如果我在Windows XP中运行它将导致-6.2579985891243E-310,但如果在Windows vista商业版中,结果将是这个的一半,我不确定Windows Vista上的确切结果因为我没有现在访问它来运行程序并获得结果。

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

两种操作系统的体系结构都是32位,都使用jdk 1.6

1 个答案:

答案 0 :(得分:2)

效果可能是由于浮点舍入行为的微小差异。这可能是由于处理器的差异,编译器的不同指令排序优化,数学库实现中的错误等。

你不太可能解决上述所有问题(即使专家们做对了也很难!) - 所以我建议你编写代码,使其不依赖于确切的浮点行为。

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