Math.round和Math.ceil不起作用

时间:2013-02-20 21:29:37

标签: java

我正在尝试对用户输入进行舍入,但我似乎可以让我的双倍轮到一个int。基本上,当我输入4.4999时,它不会向上舍入到5.

有什么想法吗?

6 个答案:

答案 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。这是因为一切都是int350/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