Java将String类型转换成double类型,为什么我的输出结果不一致?


package j2;

import java.text.DecimalFormat;

public class class4 {
    public static void main(String[] args) {
        double a=15.3;
        double b=3;
        
        DecimalFormat df=new DecimalFormat("0.00");
        String s=df.format(a/b);
        double result=Double.valueOf(s); 
        
        System.out.println(s);
        System.out.println(result);
    }

}

img

result输出为什么不是5.10

因为Double.valueOf()中的valueOf(s)方法,底层是调用parseDouble(s);方法,

   public static Double valueOf(String s) throws NumberFormatException {
        return new Double(parseDouble(s));
    }

doubleValue()方法用于返回此Number对象表示的值,该值转换为double类型(通过强制转换),并且可能涉及舍入或截断,默认小数点后1位有效值,如果后面全是0,则都会省略掉,比如:

public static void main(String[] args) {
        System.out.println(Double.valueOf("3"));
        System.out.println(Double.valueOf("3.45"));
        System.out.println(Double.valueOf("3.450"));
        System.out.println(Double.valueOf("3.45400"));

    }

img

为什么要是5.10呢
5.10是字符串
你已经转换成double了
print的时候,double会隐式转换为字符串,默认只显示小数点后1位

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632