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

  • 相关阅读:
    matplotlib-2D绘图库-面向对象
    C 指针
    POCO库中文编程参考指南(8)丰富的Socket编程
    POCO C++ SOCKET
    c++ poco StreamSocket tcpclient测试用例
    用OpenLayers开发地图应用
    Nginx-rtmp模块实现流媒体play、push、pull功能
    使用pjsip传输已经编码的视频,源码在github
    ReSIProcate源码目录下功能说明
    resiprocate使用入门:内网搭建基于repro的sipproxy测试环境
  • 原文地址:https://www.cnblogs.com/zt007/p/9790009.html
Copyright © 2011-2022 走看看