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);
}
}
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"));
}
为什么要是5.10呢
5.10是字符串
你已经转换成double了
print的时候,double会隐式转换为字符串,默认只显示小数点后1位