zoukankan      html  css  js  c++  java
  • Double类parseDouble()和valueOf()方法的区别

    数字类型的String字符串转换为浮点数通常采用parseDouble()和valueOf()方法,

    两者主要是存在以下两点区别。

    区别一:参数区别
    Double.parseDouble(java.lang.String)的参数只能是String,如果参数改为double类型提示“The method parseDouble(String) in the type Double is not applicable for the arguments (double)”错误。
    Double.valueOf()的参数类型可以是浮点型或者是字符串均可。
     

     1 public void testTem() {
     2         System.out.println("==================");
     3         String pi = "3.1415926";
     4         Double doubleValue1 = Double.valueOf(pi);
     5         Double doubleParse1 = Double.parseDouble(pi);
     6         System.out.println(String.format("doubleValue1 = %s, doubleParse1 = %s",doubleValue1, doubleParse1));
     7 
     8         Double piOfDouble = 3.1415926;
     9         Double doubleValue2 = Double.valueOf(piOfDouble);
    10         Double doubleParse2 = Double.parseDouble(piOfDouble.toString());
    11         System.out.println(String.format("doubleValue2 = %s, doubleParse2 = %s",doubleValue2, doubleParse2));
    12 
    13         Float piOfFloat = Float.valueOf(pi);
    14         Double doubleValue3 = Double.valueOf(piOfFloat);
    15         Double doubleParse3 = Double.parseDouble(piOfFloat.toString());
    16         System.out.println(String.format("doubleValue3 = %s, doubleParse3 = %s",doubleValue3, doubleParse3));
    17         System.out.println("==================");
    18     }


    控制台输出结果:

    1 ==================
    2 doubleValue1 = 3.1415926, doubleParse1 = 3.1415926
    3 doubleValue2 = 3.1415926, doubleParse2 = 3.1415926
    4 doubleValue3 = 3.141592502593994, doubleParse3 = 3.1415925
    5 ==================

    注:String转换结果相同,浮点数转换不一致


    区别二:返回类型
    Double.parseDouble(java.lang.String)把数字类型的字符串转换成double类型
    Double.valueOf()方把数字类型的字符串转换成Double类型
    Double.parseDouble()方法的源码:

        public static double parseDouble(String s) throws NumberFormatException {
                return FloatingDecimal.readJavaFormatString(s).doubleValue();
        }


    Double.valueOf()方法的源码:

        public static Double valueOf(String s) throws NumberFormatException {
            // new Double()
                return new Double(FloatingDecimal.readJavaFormatString(s).doubleValue());
        }



    通过格式化小数点位数两者结果相同,可以看出除参数和返回类型外两者区别不大。

        DecimalFormat df = new DecimalFormat("0.00");
        System.out.println(df.format(Double.parseDouble(pi)));
        System.out.println(df.format(Double.valueOf(pi)));


    控制台输出结果:

        3.14
        3.14



    参考:https://blog.csdn.net/astrologer_/article/details/78115171

  • 相关阅读:
    Codeforces467C George and Job
    Codeforces205E Little Elephant and Furik and RubikLittle Elephant and Furik and Rubik
    Codeforce205C Little Elephant and Interval
    51nod1829 函数
    51nod1574 排列转换
    nowcoder35B 小AA的数列
    Codeforce893E Counting Arrays
    gym101612 Consonant Fencity
    CodeForces559C Gerald and Giant Chess
    CodeForces456D A Lot of Games
  • 原文地址:https://www.cnblogs.com/zt007/p/9790009.html
Copyright © 2011-2022 走看看