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