Math.roundの高速実装?

mrjbq7:

このコードには欠点がありますか?これはより高速な(そして正しい)バージョンのよう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では長い丸めをゼロに切り捨てるという事実を利用しています。

クリスチャン:

組み込みメソッドが処理する特別なケースがいくつかありますが、コードでは処理できません。ドキュメントから:

  • 引数がのNaN場合、結果は0です。
  • 引数が負の無限大、またはの値以下の値であるInteger.MIN_VALUE場合、結果はの値と等しくなりますInteger.MIN_VALUE
  • 引数が正の無限大、またはの値以上の値であるInteger.MAX_VALUE場合、結果はの値と等しくなりますInteger.MAX_VALUE

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事