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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了