四舍五入任意数

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

例如,当数字为0.2,0.7,0.2222,0.4324,0.99999时,我希望结果为1。

到目前为止

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

不过看起来不怎么管用。

405694 次浏览

调用 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));

产出:

1
1.0
1.42
2.0
2

参见 http://ideone.com/yhT0l

我不知道为什么要除以100但这里我假设 int a;

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

或者

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

这似乎做了完美的工作。工作的每一次。

假设一个双精度数,我们需要一个没有小数位的四舍五入数,使用 Math.round ()函数。
这是我的解决办法。

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


Output :
a:1

最简单的方法就是: 你会收到一个浮动或双,并希望它转换到最接近的舍入,然后只是做 System.out.println((int)Math.ceil(yourfloat)); 一定会成功的

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

所以这就是那些像我一样迟到的人的答案。

这样不行

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

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

你必须避免这个圆形操作

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

现在成功了。

只是另一种选择。使用数学基础知识:

Math.ceil(p / K)((p-1) // K) + 1是一样的