Java和C之间的浮点类型有什么不同吗?

时间:2011-07-12 10:54:56

标签: java c floating-point

我正在从C导入一个项目到Java,这涉及很多浮点运算。 有关将C浮点类型转换为Java的任何特殊规则需要注意吗?

谢谢!

4 个答案:

答案 0 :(得分:2)

Java有一些规则来管理浮点计算的中间结果是否可以使用比最终结果更高的精度。您应该研究strictfp关键字。

答案 1 :(得分:1)

如果您的应用程序旨在在多个平台上运行。我不确定C,但在java中,精度取决于平台,确切地说,在某些平台上,计算可能比其他平台更精确,因此导致比较为假而不是真。为了解决这个问题,有一个strictfp修饰符可以应用于变量或方法,并使精度保持不变,因此对float的比较操作将在所有平台上产生相同的结果。

答案 2 :(得分:0)

别担心,不需要特殊规则。

答案 3 :(得分:0)

在比较浮点数之前,下面的代码是通常的处理方式:

public boolean floatEquals(float a, float b, float epsilon) {
    return Math.abs(a-b) < epsilon;
}

Epsilon很小,例如0.00001