Java汇总了任何数字

Ste*_*cus 136 java math int rounding

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

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

到目前为止我有

int b = (int) Math.ceil(a / 100);
Run Code Online (Sandbox Code Playgroud)

但它似乎并没有完成这项工作.

mar*_*cog 267

Math.ceil()是正确的调用函数.我猜a是一个int,这会使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));
Run Code Online (Sandbox Code Playgroud)

输出:

1
1.0
1.42
2.0
2
Run Code Online (Sandbox Code Playgroud)

http://ideone.com/yhT0l

  • 仅当“ a”为双精度时 (2认同)

小智 15

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

int b = (int) Math.ceil( ((double)a) / 100);
Run Code Online (Sandbox Code Playgroud)

要么

int b = (int) Math.ceil( a / 100.0);
Run Code Online (Sandbox Code Playgroud)


小智 11

int RoundedUp = (int) Math.ceil(RandomReal);
Run Code Online (Sandbox Code Playgroud)

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


Reg*_*igo 5

10 年后,这个问题仍然困扰着我。

所以这是对那些为时已晚的人的答案。

这不起作用

int b = (int) Math.ceil(a / 100);
Run Code Online (Sandbox Code Playgroud)

因为结果结果a / 100是一个整数并且它被四舍五入所以 Math.ceil 不能做任何事情。

您必须避免使用此四舍五入操作

int b = (int) Math.ceil((float) a / 100);
Run Code Online (Sandbox Code Playgroud)

现在它起作用了。