double类型转化成string

public static void main(String[] args) {
double priceWithFreight = 1200.5698d;
System.out.println(priceWithFreight);

//double转string 超过1000小数点会变成逗号的bug, 不要用这个方法
NumberFormat nf = NumberFormat.getInstance();
nf.setRoundingMode(RoundingMode.HALF_UP);//设置四舍五入
nf.setMaximumFractionDigits(2);//设置最大保留几位小数
String str= nf.format(priceWithFreight);
System.out.println(str);                                     // 输出: 1,200.57 

//正确的double 转string 的方法
BigDecimal b = new BigDecimal(priceWithFreight);
String str1=String.valueOf(b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue());
System.out.println(str1);      //输出: 1200.57
}

 

double n = 0.01;
double m = 0.06;

System.out.println(m+n);    // 输出: 0.06999999999999999

需要把 double 转化成 String, 然后转化成 BigDecimal ,再计算:

BigDecimal d1 = new BigDecimal(Double.toString(m));      // d1是 0.06

BigDecimal d2 = new BigDecimal(String.valueOf(n));        // d2 是 0.01

BigDecimal res = d1.add(d2);

System.out.println(res);   // 输出: 0.07

 

 

或者用以下的方法:

double res2 = m+n;    // res2 的值是  0.06999999999999999
double val = 1.00;
int scale = 2;
double result = new BigDecimal(Double.toString(res2)).multiply(new BigDecimal(Double.toString(val))).setScale(scale, BigDecimal.ROUND_HALF_UP).doubleValue();
System.out.println(result);

 

ROUND_HALF_UP 四舍五入

 

如果一个对象 obj 的属性定义为Integer  id ,则 obj.getId() + ""  输出的是 “null” 字符串,而不是 空 或者 null 对象。

posted @ 2018-04-26 14:15  zhoudingzhao  阅读(9835)  评论(0编辑  收藏  举报