美文网首页
double数组取精度问题

double数组取精度问题

作者: 阿莫米德 | 来源:发表于2017-03-13 17:48 被阅读0次

    练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数组取精度问题

          本文链接:https://www.haomeiwen.com/subject/bgkqnttx.html