确定给定的float(或double)是否没有显着小数位的最佳方法是什么。
f(234.0) = true f(34.45) = false f(3.1322) = false
即。相当于
EQ(((int)number) * 1.0 , number)
其中EQ是比较浮点的给定方法,可以假设浮点数适合整数。
答案 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;
}