我似乎无法找到我正在寻找的关于一个简单问题的答案:如何将任何数字四舍五入到最近的int
?
例如,每当数字为0.2,0.7,0.2222,0.4324,0.9999时,我希望结果为1.
到目前为止我已经
了int b = (int) Math.ceil(a / 100);
但是,它似乎没有完成这项工作。
答案 0 :(得分:249)
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
答案 1 :(得分:15)
我不知道你为什么要除以100,但我的假设int a;
int b = (int) Math.ceil( ((double)a) / 100);
或
int b = (int) Math.ceil( a / 100.0);
答案 2 :(得分:10)
int RoundedUp = (int) Math.ceil(RandomReal);
这似乎做得很好。每次都工作。
答案 3 :(得分:3)
十年后,但那个问题仍然困扰着我。
这就是那些对我来说太迟的人的答案。
这不起作用
int b = (int) Math.ceil(a / 100);
因为结果a / 100
变成一个整数,并且四舍五入,所以Math.ceil
对此无能为力。
您必须避免对此操作进行四舍五入
int b = (int) Math.ceil((float) a / 100);
现在可以了。
答案 4 :(得分:0)
最简单的方法是:
您会收到一个浮点数或双精度数,并希望将其转换为最接近的整数,然后执行 System.out.println((int)Math.ceil(yourfloat));
会完美地工作
答案 5 :(得分:-2)
假设a为double,我们需要一个没有小数位的舍入数字。使用Math.round()函数。
这是我的解决方案。
double a = 0.99999;
int rounded_a = (int)Math.round(a);
System.out.println("a:"+rounded_a );
Output :
a:1