假设有以下课程:
class Test {
public static void main(String[] args) {
double result = Math.log(9) / Math.log(3);
System.out.println(result);
}
};
在 x86_64 Linux 机器 (
Linux 6.8.10-300.fc40.x86_64 #1 SMP PREEMPT_DYNAMIC Fri May 17 21:20:54 UTC 2024 x86_64 GNU/Linux
) 上,我得到以下结果:
2.0
在 M3 Mac 上,我得到以下信息:
2.0000000000000004
除了 JDK bug 之外,对这种行为还有哪些可能的解释? 两台机器上使用的JDK版本都是
Temurin-21.0.3+9
。