static double round(double input) { //rounds a double input to the 2 decimals.
return Math.round(input*100.0)/100.0;
}
上面的函数是我的代码中的一个函数,它将双输入舍入为2位小数。我注意到,只要返回值是第二个小数点为零的数字(I.E.2.20,3.30,5.40等),我就使用System.out.println()打印此返回值;打印功能,2.2,3.3,5.4,在小数点后2处丢失零。但是,对于具有.00十进制数(I.E.00,2,3.0等)的数字,每当我打印它时,第一个小数点上的零都不会丢失。
我的目的是使打印结果在其最后一个十进制数字中落零,因为它是不必要的。我假设这可以通过将double类型转换为int类型来完成,尤其是在round函数的返回结果具有.00的小数的情况下。如何检测此案例并成功将其更改为int类型?
答案 0 :(得分:0)
我认为您可以使用java.text.NumberFormat类来设置最小分数位数。
NumberFormat numberFormat = NumberFormat.getInstance();
numberFormat.setMinimumFractionDigits(2);
System.out.println(numberFormat .format(yourNumber));
答案 1 :(得分:0)
static int round(double input) { //rounds a double input to the 2 decimals.
if(Math.floor(input) == Math.ceil(input){
return (int) input;
}
return -1;
}
你可以指定返回类型为double并期望返回一个int,如果你想要返回类型为整数,make函数返回类型为整数
答案 2 :(得分:0)
将双重格式的数字乘以100,然后将数字除以10然后再将新数字除以10以提取最后两位数,如果两个数字均为0,则只需输入原始数字(int )。这样你就不会在数字的最后得到双零。希望我解决了你的问题,如果有任何澄清,请询问......
答案 3 :(得分:0)
检查解析为int的double是否等于double,如
if (input == (int)input)
{
// print (int)input here
}