我想知道Java在运行虚拟机的机器架构上是否使用统一精度来处理浮点数(float和double)。
这是必要的,因为我正在尝试同步涉及多台机器上数学计算的模拟,并且必须确保所有计算在所有机器上产生相同的结果。
我想知道Java在运行虚拟机的机器架构上是否使用统一精度来处理浮点数(float和double)。
这是必要的,因为我正在尝试同步涉及多台机器上数学计算的模拟,并且必须确保所有计算在所有机器上产生相同的结果。
您不用担心,Java语言已经规定了精度标准。在每个Java平台上,这个标准应该是相同的。具体细节请参考http://docs.oracle.com/javase/specs/jls/se7/html/jls-4.html#jls-4.2.3。
Math
类的实现可能会稍微离开标准算法。而StrictMath
类的实现必须完全按照标准发布的算法输出结果,这与数字本身的精确度不同。 - Dawood ibn Kareem
x/y
(其中x和y是任意浮点/双精度值)这样的表达式是否严格保证在任何地方都产生相同的结果。 - user2246674Math.sin(x)
(例如)可能会根据方法的实现方式而返回不同的结果。 - assyliasstrictfp
修饰符。 - Hot Licks