ユーザー入力を丸めようとしていますが、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/1003
ただし、 を指定するMath.ceil(7 * 50 / 100D)と、結果は になります4.0。
したがって、質問の は であり、 のような整数演算の結果ではない4.999はずです。double4999/1000
の中に与えるものは何でも、 ではなく であることを確認しceilてdoubleくださいint。
どちらの関数も丸められた (または上限のある) 値を返しますが、パラメーターとして渡された変数は変更しません。
例を使用してください。hours = Math.ceil(hours);.
Math.cielを返しますDouble。このようなものは(あなたのhours > 0ブロックの中で)動作するはずです:
cost += Math.ceil(hours) * hourlyRate;
Math.ceil(hours)backの結果を割り当てていないhoursため、丸められません。