Java 对任意数字进行四舍五入

发布于 2024-10-09 15:54:32 字数 222 浏览 8 评论 0原文

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

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

但到目前为止

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

,它似乎并没有完成这项工作。

I can't seem to find the answer I'm looking for regarding a simple question: how do I round up any number to the nearest int?

For example, whenever the number is 0.2, 0.7, 0.2222, 0.4324, 0.99999 I would want the outcome to be 1.

So far I have

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

It doesn't seem to be doing the job, though.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

居里长安 2024-10-16 15:54:32

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

Math.ceil() is the correct function to call. I'm guessing a is an int, which would make a / 100 perform integer arithmetic. Try Math.ceil(a / 100.0) instead.

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

Outputs:

1
1.0
1.42
2.0
2

See http://ideone.com/yhT0l

冰火雁神 2024-10-16 15:54:32

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

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

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

I don't know why you are dividing by 100 but here my assumption int a;

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

or

int b = (int) Math.ceil( a / 100.0);
空气里的味道 2024-10-16 15:54:32
int RoundedUp = (int) Math.ceil(RandomReal);

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

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

This seemed to do the perfect job. Worked everytime.

落花随流水 2024-10-16 15:54:32

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

所以这就是对那些像我一样来得太晚的人的答案。

这不起作用

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

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

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

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

现在它可以工作了。

10 years later but that problem still caught me.

So this is the answer to those that are too late as me.

This does not work

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

Cause the result a / 100 turns out to be an integer and it's rounded so Math.ceil
can't do anything about it.

You have to avoid the rounded operation with this

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

Now it works.

成熟稳重的好男人 2024-10-16 15:54:32

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

Math.ceil(p / K)((p-1) // K) + 1 相同

Just another option. Use basics of math:

Math.ceil(p / K) is same as ((p-1) // K) + 1

暖风昔人 2024-10-16 15:54:32

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

The easiest way to do this is just:
You will receive a float or double and want it to convert it to the closest round up then just do System.out.println((int)Math.ceil(yourfloat));
it'll work perfectly

野生奥特曼 2024-10-16 15:54:32

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

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

Output : 
a:1

Assuming a as double and we need a rounded number with no decimal place . Use Math.round() function.
This goes as my solution .

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

Output : 
a:1
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文