Double类parseDouble()和valueOf()方法的区别

Posted zt007

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 ==================


区别二:返回类型
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



















以上是关于Double类parseDouble()和valueOf()方法的区别的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Double.parseDouble(null) 和 Integer.parseInt(null) 会抛出不同的异常?

Double.parseDouble(String s)

parseDouble()方法

帮我解释下java计算器代码中的除法运算谢谢

如何从变量中取值如果java中的Statement [关闭]

String转JSONObject