我正在尝试对用户输入进行四舍五入,但我似乎可以让我的 double 舍入为 int。基本上,当我输入 4.4999 时,它不会四舍五入到 5。
有任何想法吗?
Math.ceil()
返回上限值。它不能改变它作为参数的变量的值,因为 Java 按值传递参数。所以你需要做
hours = Math.ceil(hours);
实际的解决方案是在方法内部使用 double ceil
。
Math.ceil(7 * 50 / 100)
3.0
即使从7*50/100
is产生的实际值也会返回3.5
。那是因为既然一切都是int
,结果350/100
本身就会是3
。
但是,如果您给出Math.ceil(7 * 50 / 100D)
,结果将是4.0
。
因此,4.999
您的问题中的 应该是 adouble
而不是整数运算的结果,例如4999/1000
.
只要确保你在 a 中给出的任何东西ceil
都是double
而不是int
.
两个函数都返回舍入(或上限)值,但不更改作为参数传递的变量。
使用例如。hours = Math.ceil(hours);
.
Math.ciel
返回一个Double
。像这样的东西应该可以工作(在你的hours > 0
块内):
cost += Math.ceil(hours) * hourlyRate;
您没有将Math.ceil(hours)
返回的结果分配给,hours
因此它永远不会四舍五入。
int a = 15
int b = 2;
int x = (int) Math.ceil( a / b );
int y = (int) Math.ceil( (double) a / (double) b );
结果:
×:7
是:8