这段代码有什么缺点吗?它似乎是更快(并且正确)的版本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 中,将长舍入截断为零。
有一些特别案例 http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Math.html#round%28float%29内置方法处理哪些内容,而您的代码不处理哪些内容。从文档中:
- 如果参数是
NaN
,结果为0。
- 如果参数为负无穷大或任何小于或等于值的值
Integer.MIN_VALUE
,结果等于Integer.MIN_VALUE
.
- 如果参数为正无穷大或任何大于或的值
等于
Integer.MAX_VALUE
,结果等于Integer.MAX_VALUE
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)