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 对象。
 
                    
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号