为什么这是真的?与 C 甚至 Java Math.pow 方法相比,当将两个浮点数相乘时,Java 产生的结果似乎略有差异。
爪哇:
float a = 0.88276923;
double b = a * a; // b becomes 0.779281497001648 <---- what???
b = Math.pow(a,2); // b becomes 0.7792815081874238
C:
float a = 0.88276923;
double b = a * a; // b becomes 0.7792815081874238
pow(a,2); // b becomes 0.7792815081874238
更新:根据 Ed S. 的评论,我还发现 C 行为会根据编译器而变化。使用 gcc 它似乎与 Java 行为相匹配。使用 Visual Studio(取决于您的目标平台)它可以产生上面看到的结果或在 Java 中看到的结果。啊。