8

我正在尝试对用户输入进行四舍五入,但我似乎可以让我的 double 舍入为 int。基本上,当我输入 4.4999 时,它不会四舍五入到 5。

有任何想法吗?

4

6 回答 6

11

Math.ceil() 返回上限值。它不能改变它作为参数的变量的值,因为 Java 按值传递参数。所以你需要做

hours = Math.ceil(hours);
于 2013-02-20T21:31:53.440 回答
9

实际的解决方案是在方法内部使用 double ceil

Math.ceil(7 * 50 / 100)3.0即使从7*50/100is产生的实际值也会返回3.5。那是因为既然一切都是int,结果350/100本身就会是3

但是,如果您给出Math.ceil(7 * 50 / 100D),结果将是4.0

因此,4.999您的问题中的 应该是 adouble而不是整数运算的结果,例如4999/1000.

只要确保你在 a 中给出的任何东西ceil都是double而不是int.

于 2013-08-17T15:53:11.230 回答
4

两个函数都返回舍入(或上限)值,但不更改作为参数传递的变量。

使用例如。hours = Math.ceil(hours);.

于 2013-02-20T21:31:50.117 回答
2

Math.ciel返回一个Double。像这样的东西应该可以工作(在你的hours > 0块内):

cost += Math.ceil(hours) * hourlyRate;
于 2013-02-20T21:31:27.137 回答
2

您没有将Math.ceil(hours)返回的结果分配给,hours因此它永远不会四舍五入。

于 2013-02-20T21:33:46.493 回答
1
int a = 15

int b = 2;

int x = (int) Math.ceil( a / b );

int y = (int) Math.ceil( (double) a / (double) b );

结果

×:7

是:8

于 2017-05-15T20:50:11.640 回答