此代码是否有任何缺点,它似乎是 java.lang.Math.round
的更快(且正确)版本?
public static long round(double d) {
if (d > 0) {
return (long) (d + 0.5d);
} else {
return (long) (d - 0.5d);
}
}
它利用了在 Java 中将长轮截断为零这一事实。
最佳答案
有一些special cases内置方法处理,您的代码不处理。来自文档:
- 如果参数为
NaN
,则结果为0。 - 如果参数为负无穷大或任何小于或等于
Integer.MIN_VALUE
值的值,则结果等于Integer.MIN_VALUE
的值。 - 如果参数是正无穷大或任何大于或
等于
Integer.MAX_VALUE
的值,结果等于Integer.MAX_VALUE
的值。
关于java - 更快地实现 Math.round?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1750739/