我正在尝试对用户输入进行舍入,但我似乎可以让我的双倍轮到一个int。基本上,当我输入4.4999时,它不会向上舍入到5.
有什么想法吗?
答案 0 :(得分:9)
Math.ceil()
返回 ceiled值。它不能改变它作为参数所使用的变量的值,因为Java通过值传递参数。所以你需要做
hours = Math.ceil(hours);
答案 1 :(得分:7)
实际的解决方案是在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
。
答案 2 :(得分:4)
两个函数都返回舍入(或上限)值,但不更改作为参数传递的变量。
使用例如。 hours = Math.ceil(hours);
。
答案 3 :(得分:2)
Math.ciel
返回Double
。这样的事情应该有效(在hours > 0
区块内):
cost += Math.ceil(hours) * hourlyRate;
答案 4 :(得分:2)
您没有将Math.ceil(hours)
的结果分配回hours
,因此它永远不会圆。
答案 5 :(得分:0)
int a = 15
int b = 2;
int x = (int) Math.ceil( a / b );
int y = (int) Math.ceil( (double) a / (double) b );
<强>结果:
x:7
y:8