8

ユーザー入力を丸めようとしていますが、double を int に丸めているようです。基本的に、4.4999 を入力すると、5 に切り上げられません。

何か案は?

4

6 に答える 6

11

Math.ceil() 上限値を返します。Java は引数を値で渡すため、引数として受け取る変数の値を変更することはできません。だからあなたはする必要があります

hours = Math.ceil(hours);
于 2013-02-20T21:31:53.440 に答える
9

ceil実際の解決策は、メソッド内で double を使用することです。

Math.ceil(7 * 50 / 100)3.0から得られる実際の値が であっても、が返され7*50/100ます3.5。すべてがであるため、それ自体intの結果は になります。350/1003

ただし、 を指定するMath.ceil(7 * 50 / 100D)と、結果は になります4.0

したがって、質問の は であり、 のような整数演算の結果ではない4.999はずです。double4999/1000

の中に与えるものは何でも、 ではなく であることを確認しceildoubleくださいint

于 2013-08-17T15:53:11.230 に答える
4

どちらの関数も丸められた (または上限のある) 値を返しますが、パラメーターとして渡された変数は変更しません。

例を使用してください。hours = Math.ceil(hours);.

于 2013-02-20T21:31:50.117 に答える
2

Math.cielを返しますDouble。このようなものは(あなたのhours > 0ブロックの中で)動作するはずです:

cost += Math.ceil(hours) * hourlyRate;
于 2013-02-20T21:31:27.137 に答える
2

Math.ceil(hours)backの結果を割り当てていないhoursため、丸められません。

于 2013-02-20T21:33:46.493 に答える