4

C#では、double(1.71472)をintに変換する場合、答えは2になります。JavaでintValue()メソッドを使用してこれを行うと、答えとして1が得られます。

Javaは変換を切り捨てますか?

なぜJavaAPIドキュメントには、クラスに関する情報がほとんどないのですか。

指定された数値の値をintとして返します。これには、丸めまたは切り捨てが含まれる場合があります。

丸めについてもう少し情報があれば役に立ちました!

4

3 に答える 3

13

浮動小数点から整数型にナローイングする場合、Java はゼロに向かって丸めます。キャスト変換を使用する場合、C# も同様です。それConvert.ToInt32はラウンドです:

double d = 1.71472;
int x = (int) d; // x = 1
int y = Convert.ToInt32(d); // y = 2

詳細はJava 言語仕様に記載されています。で引用されているドキュメントNumberではサブクラスのオプションが開かれていますが、 のような具象ボックス化タイプに関するドキュメントでDouble実装が明示されていることに注意してください。

この Double の値を (int 型にキャストすることにより) int として返します。

を使用する場合BigDecimal、8 つの異なる丸めポリシーのいずれかを指定できます。

于 2008-11-18T20:43:19.983 に答える
7

Javaは、浮動小数点から整数型にナローイングするときにゼロに向かって丸めます。

Java言語仕様には、一般的な規則に関するその他のドキュメントがあります。Numberのドキュメントはサブクラスのオプションを開いたままにしますが、具体的なボクシングの種類に関するドキュメントはより明確であることに注意してください。

このDoubleの値をintとして返します(int型にキャストすることにより)。

BigDecimalを使用する場合、8つの異なる丸めポリシーのいずれかを指定できます。

于 2008-11-18T20:40:14.827 に答える
3

Jon Skeet は正しいですが、.NET では丸めアルゴリズムとしてBanker's Roundingが使用されていることに注意してください。偶数の整数への丸めの途中にいるとき。

于 2008-11-18T22:37:47.333 に答える