[英]Floating point rounding (in java)
确定给定浮点数(或双精度数)是否没有小数位的最佳方法是什么。
f(234.0) = true f(34.45) = false f(3.1322) = false
即相当于
EQ(((int)number) * 1.0 , number)
EQ是比较浮点数的给定方法,可以确定浮点数适合整数。
Math.rint(x) == x
Math.rint()
返回double
,因此它也适用于Math.round()
的long
结果溢出的大量数字。
请注意,这对于正无穷大和负无穷大也适用。 您可以通过Math.rint(x) == x && !Double.isInfinite(x)
明确排除它们。
将值四舍五入到最接近的整数,然后计算出与实际值的绝对差。
如果该差异小于实际值的某个百分比,则表示您“足够”。
您可以尝试这样的事情:
public static boolean f(double d) {
return d % 1 == 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.