【发布时间】:2011-07-12 10:54:55
【问题描述】:
我正在将一个项目从 C 导入 Java,其中涉及大量浮点运算。
在将 C 浮点类型转换为 Java 时是否需要注意任何特殊规则?
【问题讨论】:
标签: java c floating-point
我正在将一个项目从 C 导入 Java,其中涉及大量浮点运算。
在将 C 浮点类型转换为 Java 时是否需要注意任何特殊规则?
【问题讨论】:
标签: java c floating-point
Java 有一些规则来管理浮点计算中的中间结果是否可以使用比最终结果更高的精度。您应该研究strictfp 关键字。
【讨论】:
如果您的应用程序旨在在多个平台上运行。我不确定C,但在java中,精度取决于平台,确切地说,在某些平台上,计算可能比其他平台更精确,因此导致比较是假的而不是真的。为了解决这个问题,有一个strictfp 修饰符可以应用于变量或方法,并且使精度保持不变,因此您在浮点数上的比较操作将在所有平台上产生相同的结果。
【讨论】:
不用担心,不需要特别的规则。
【讨论】:
关于比较浮点数,下面的代码是它的常用方法:
public boolean floatEquals(float a, float b, float epsilon) {
return Math.abs(a-b) < epsilon;
}
Epsilon 是一个小数,例如 0.00001
【讨论】: