浮点舍入(在java中)

时间:2010-08-15 18:24:29

标签: java floating-point rounding

确定给定的float(或double)是否没有显着小数位的最佳方法是什么。

f(234.0)  = true
f(34.45)  = false
f(3.1322) = false

即。相当于

EQ(((int)number) * 1.0 , number)

其中EQ是比较浮点的给定方法,可以假设浮点数适合整数。

3 个答案:

答案 0 :(得分:2)

Math.rint(x) == x

Math.rint()会返回double,因此它也适用于long Math.round()结果溢出的大数字。

请注意,这也适用于正无穷大。您可以Math.rint(x) == x && !Double.isInfinite(x)明确排除它们。

答案 1 :(得分:1)

将值四舍五入为最接近的整数,并计算与实际值的绝对差值。

如果差异小于实际值的某个百分比,则表示“足够”。

答案 2 :(得分:0)

您可以尝试这样的事情:

public static boolean f(double d) {
    return d % 1 == 0;
}