Java汇总了任何数字

时间:2010-12-27 18:00:03

标签: java math int rounding

我似乎无法找到我正在寻找的关于一个简单问题的答案:如何将任何数字四舍五入到最近的int

例如,每当数字为0.2,0.7,0.2222,0.4324,0.9999时,我希望结果为1.

到目前为止我已经

int b = (int) Math.ceil(a / 100);
但是,它似乎没有完成这项工作。

6 个答案:

答案 0 :(得分:249)

Math.ceil()是正确的调用函数。我猜aint,这会使a / 100执行整数运算。请改为Math.ceil(a / 100.0)

int a = 142;
System.out.println(a / 100);
System.out.println(Math.ceil(a / 100));
System.out.println(a / 100.0);
System.out.println(Math.ceil(a / 100.0));
System.out.println((int) Math.ceil(a / 100.0));

输出:

1
1.0
1.42
2.0
2

请参阅http://ideone.com/yhT0l

答案 1 :(得分:15)

我不知道你为什么要除以100,但我的假设int a;

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

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

答案 2 :(得分:10)

int RoundedUp = (int) Math.ceil(RandomReal);

这似乎做得很好。每次都工作。

答案 3 :(得分:3)

十年后,但那个问题仍然困扰着我。

这就是那些对我来说太迟的人的答案。

这不起作用

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

因为结果a / 100变成一个整数,并且四舍五入,所以Math.ceil 对此无能为力。

您必须避免对此操作进行四舍五入

int b = (int) Math.ceil((float) a / 100);

现在可以了。

答案 4 :(得分:0)

最简单的方法是: 您会收到一个浮点数或双精度数,并希望将其转换为最接近的整数,然后执行 System.out.println((int)Math.ceil(yourfloat)); 会完美地工作

答案 5 :(得分:-2)

假设a为double,我们需要一个没有小数位的舍入数字。使用Math.round()函数。
这是我的解决方案。

double a = 0.99999;
int rounded_a = (int)Math.round(a);
System.out.println("a:"+rounded_a );

Output : 
a:1