四舍五入

时间:2020-04-16 07:53:11

标签: java

嗨,我需要一些四舍五入的帮助,如下所述:

  • 如果double值为18.9000,则将返回18.90
  • 如果double值为18.0000,则将返回18
  • 如果double值为18.8689,则将返回18.86

请帮助我。

1 个答案:

答案 0 :(得分:0)

由于您要请求特定的行为,因此可以执行以下操作:

public static void main(String[] args){
        String res = formatNum(18.9000); //18.89
        if(res.indexOf(".") < 0)
            System.out.println(Integer.parseInt(res));
        else 
            System.out.println(Double.parseDouble(res));
        res = formatNum(18.0000);//18
        if(res.indexOf(".") < 0)
            System.out.println(Integer.parseInt(res));
        else 
            System.out.println(Double.parseDouble(res));
        res = formatNum(18.8689); //18.86
        if(res.indexOf(".") < 0)
            System.out.println(Integer.parseInt(res));
        else 
            System.out.println(Double.parseDouble(res));
}
private static String formatNum(double num) {
        double n1 = Math.floor(num*100)/100;
        int n2 = (int)Math.round(num);
        return (n1==n2) ? n2+"" : n1+"";
}