Java舍入任意数量


146

对于一个简单的问题,我似乎找不到所需的答案:如何将任何数字四舍五入到最接近的数字int

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

到目前为止,我有

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

不过,它似乎并没有完成任务。


为什么在示例代码中除以100?
乔恩·斯基特

14
我敢打赌你a有整数类型。
Nikita Rybak 2010年

1
是的,您的意思是int ...感谢您指出这一点。100.0为我排序。
Stevanicus,2010年

1
我猜他想要的是四舍五入,但是的,这个问题可能需要澄清。
杰伊,2010年

1
注意:在这个问题上,提供了更好的答案。
martijnn2008

Answers:


289

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


3
仅在“ a”为双
精度的情况下

^^“ a”必须为双精度或强制双精度。
Codeversed

1
aint在这个例子中,它工作的建议。这样做时int / float,结果为a float,如输出所示。试用链接。
丹迪斯顿'17

16

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

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

要么

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


2

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

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

这行不通

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

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

您必须避免对此进行四舍五入运算

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

现在可以了。


0

最简单的方法是:您将收到一个float或double并希望将其转换为最接近的四舍五入,然后 System.out.println((int)Math.ceil(yourfloat)); 将其完美地工作


-3

假设一个双精度数,我们需要一个不带小数位的舍入数字。使用Math.round()函数。
这是我的解决方案。

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

Output : 
a:1

1
这是一个错误的答案,因为在这里要求四舍五入,如果a = 0.2,结果将为0
Mohamed23gharbi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.