ユーザー入力を丸めようとしていますが、double を int に丸めているようです。基本的に、4.4999 を入力すると、5 に切り上げられません。
何か案は?
Math.ceil()
上限値を返します。Java は引数を値で渡すため、引数として受け取る変数の値を変更することはできません。だからあなたはする必要があります
hours = Math.ceil(hours);
ceil
実際の解決策は、メソッド内で double を使用することです。
Math.ceil(7 * 50 / 100)
3.0
から得られる実際の値が であっても、が返され7*50/100
ます3.5
。すべてがであるため、それ自体int
の結果は になります。350/100
3
ただし、 を指定するMath.ceil(7 * 50 / 100D)
と、結果は になります4.0
。
したがって、質問の は であり、 のような整数演算の結果ではない4.999
はずです。double
4999/1000
の中に与えるものは何でも、 ではなく であることを確認しceil
てdouble
くださいint
。
どちらの関数も丸められた (または上限のある) 値を返しますが、パラメーターとして渡された変数は変更しません。
例を使用してください。hours = Math.ceil(hours);
.
Math.ciel
を返しますDouble
。このようなものは(あなたのhours > 0
ブロックの中で)動作するはずです:
cost += Math.ceil(hours) * hourlyRate;
Math.ceil(hours)
backの結果を割り当てていないhours
ため、丸められません。