只有当double有一个十进制' .00&#39 ;?时才能将double转换为整数? (Java)的

时间:2017-09-26 02:47:25

标签: java

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类型?

4 个答案:

答案 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
    }