java - 更快地实现 Math.round?

标签 java math rounding micro-optimization

此代码是否有任何缺点,它似乎是 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/

相关文章:

java - Hashmap获取Value时的内部流程

java - 解决迷宫的最短路径

.net - C# Math.Pow() 坏了

java - apache.commons.math distributions,得到大于1的概率

c++ - 使我的结构或类与 std::round 兼容

java - 在 Java 中移动 Math.ceil

java - 如果银行账户类别中遗漏了报表?

java - 你可以将 spring bean 注入(inject)到一个类中而不是直接注入(inject)到 spring 容器中吗?

python - Python 中的位置排名和关系处理

c# - 带分钟的 DATEDIFF 不返回预期值