Java 对任意数字进行四舍五入
我似乎无法找到我正在寻找的关于一个简单问题的答案:如何将任何数字四舍五入到最接近的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
Math.ceil()
是要调用的正确函数。我猜测a
是一个int
,这将使a / 100
执行整数算术。请尝试使用Math.ceil(a / 100.0)
代替。输出:
请参阅 http://ideone.com/yhT0l
Math.ceil()
is the correct function to call. I'm guessinga
is anint
, which would makea / 100
perform integer arithmetic. TryMath.ceil(a / 100.0)
instead.Outputs:
See http://ideone.com/yhT0l
我不知道你为什么要除以 100,但这里我的假设
int a;
或
I don't know why you are dividing by 100 but here my assumption
int a;
or
这似乎做得很完美。每次都工作。
This seemed to do the perfect job. Worked everytime.
10年后,这个问题仍然困扰着我。
所以这就是对那些像我一样来得太晚的人的答案。
这不起作用
,因为结果
a / 100
结果是一个整数,并且四舍五入,所以 Math.ceil对此无能为力。
您必须避免使用此舍入操作
现在它可以工作了。
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
Cause the result
a / 100
turns out to be an integer and it's rounded so Math.ceilcan't do anything about it.
You have to avoid the rounded operation with this
Now it works.
只是另一种选择。使用数学基础知识:
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
最简单的方法就是:
您将收到一个浮点数或双精度数,并希望将其转换为最接近的舍入,然后只需执行
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
假设 a 为 double,我们需要一个没有小数位的四舍五入数字。使用 Math.round() 函数。
这就是我的解决方案。
Assuming a as double and we need a rounded number with no decimal place . Use Math.round() function.
This goes as my solution .