0

理由はわかりませんが、パラメーターを小数から分数に変更すると、2 つの異なる結果が得られます。

これらのメソッドは正確な値を返します。たとえば、小数の場合は数値を切り上げようとしています。

0.0 -> 0

0.1 -> 1

0.4 -> 1

0.5 -> 1

0.6 -> 1

1.0 -> 1

1.1 -> 2

// accepts Double
private void myRound(Double d){
   int res = (int)Math.ceil(d);
   return (res <= 0 ? 1 : res);
}

// acepts int
private void myRound(int i){
   int res = (int)Math.ceil(i);
   return (res <= 0 ? 1 : res);
}

例:

System.out.println(myRound(14 / 10));

出力: 1

System.out.println(myRound(1.4);

出力: 2

4

2 に答える 2

5

まず、(14/10) が 1 である Integer への変換が行われ、次に 1 に上限が設定されます。1.4 は倍精度なので、倍精度の数値として上限になります。

于 2013-02-12T15:06:03.310 に答える
3

14/10は、あなたが書いたように、1と の両方が1410なるintため、結果は になりintます。

出力としてリストしたものはコードと一致しません (特に、表示したコードが を決して呼び出さないためmyRound) が、それが実際に表示されているものの説明になると思います。

于 2013-02-12T15:08:45.737 に答える