Java可以把任何数字取整

Java可以把任何数字取整,java,math,int,rounding,Java,Math,Int,Rounding,对于一个简单的问题,我似乎找不到我想要的答案:如何将任何数字取整到最接近的int 例如,当数字为0.2、0.7、0.2222、0.4324、0.99999时,我希望结果为1 到目前为止我有 int b = (int) Math.ceil(a / 100); 不过,它似乎不起作用。是正确的调用函数。我猜a是一个int,这将使a/100执行整数运算。试试Math.ceil(a/100.0) int a = 142; System.out.println(a / 100); System.out.p

对于一个简单的问题,我似乎找不到我想要的答案:如何将任何数字取整到最接近的
int

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

到目前为止我有

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

不过,它似乎不起作用。

是正确的调用函数。我猜
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

我不知道你为什么要除以100,但这里是我的假设
inta

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


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

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

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

Output : 
a:1

最简单的方法是: 您将收到一个float或double,并希望它将其转换为最接近的整数,然后只需执行
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);

现在它工作了。

为什么在示例代码中要除以100?我打赌你的
a
是整数类型。是的,你右边的a是整数。。。谢谢你指出这一点。100.0为我排序。我猜他想要的是a/100四舍五入,但是的,这个问题可能需要一些澄清。注意:在问题中提供了更好的答案。只有当“a”是双精度的^^“a”需要是双精度的或转换为双精度的。
a
在本例中是
int
,并且它按照建议工作。执行
int/float
时,结果是
float
,如输出所示。试试这个链接。这是一个错误的答案,因为这里要求它在a=0.2时进行四舍五入,结果将是0
int b = (int) Math.ceil(a / 100);
int b = (int) Math.ceil((float) a / 100);