なぜ矛盾があるのですか?
矛盾はありません。メソッドは、単に異なる仕様に従うように設計されています。
long round(double a)
long
引数に最も近いものを返します。double floor(double a)
double
引数以下で数学的な整数に等しい最大の(正の無限大に最も近い)値を返します。double ceil(double a)
double rint(double a)
double
引数に最も近く、数学的整数に等しい値を返しますしたがって、設計round
ではa long
にrint
丸め、に丸めdouble
ます。JDK 1.0以降、これは常に当てはまります。
その他のメソッドがJDK 1.2で追加されました(例:toRadians
、toDegrees
)。他の人が(例えば1.5で追加されたlog10
、ulp
、signum
、など)、まだいくつかのより多くの(例えば1.6で追加されたcopySign
、getExponent
、nextUp
、など)(のために見て以来:ドキュメントのメタデータ)。しかし、round
とrint
いつもお互いに彼らは初めから今のやり方がありました。
おそらく、おそらく代わりにlong round
とdouble rint
、それらに名前を付けるために、より「一貫」だろうdouble round
とlong rlong
、これは理屈っぽいです。とはいえ、これを断定的に「不整合」と呼ぶことに固執する場合、その理由は「それが避けられないため」と同じくらい満足できないかもしれません。
以下は、Effective Java 2nd Edition、Item 40:Design method signatures慎重に引用したものです。
疑問がある場合は、JavaライブラリAPIを参考にしてください。これらのライブラリーのサイズと範囲を考えると、多くの不整合がありますが(不可避ですが)、かなりの量のコンセンサスもあります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加