double数组取精度问题

练OJ是一个特别需要耐心和Vissurra的事。

格式化输出double数值,精度为小数点后两位。
如:

average = 1458.42453;

底下这个方法里面看不懂。
上网查了一下。
Math.round(x)的方法,是x+0.5,然后向下取整。这样相当于四舍五入了。
Math.floor()这个方法翻译过来是地板,就是向下取整的意思。
Math.ceil()翻译过来是天花板,就是向上取整的意思。

System.out.println("Math.round(average * 100)/100.0);

底下这个方法是专业的格式化的方法。
利用DecimalFormat这个类。

System.out.println(new DecimalFormat("0.00").format(average));

就把这个记住就好了。其他还有不少方法,以后在说。

但是在我不知道这个方法的时候,我自己写了一个方法,我不知道为什么OJ上一直给我WA,之前一直有点气愤。
我是这么写的。

String str = String.valueOf(average);
        String[]str1 = str.split("\\.");
        String str2 = str1[1].substring(0,2);
        str = str1[0]+"."+str2;
        System.out.println(str);

现在想了一下,不知道是不是因为没有四舍五入。
但是DecimalFormat这个方法是四舍五入的吗,我用DecimalFormat的时候OJ让我过了。
我不知道为什么。

你可能感兴趣的:(double数组取精度问题)