zoukankan      html  css  js  c++  java
  • 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 对象。

  • 相关阅读:
    百度编辑器 Ueditor使用记录
    JS实现继承的几种方式
    IOS 浏览器上设置overflow: auto 不可滚动
    throw new Error('Cyclic dependency' + nodeRep)
    如何理解springaop
    SQL连接的分类
    Eclipse创建Maven-Web项目及解决 jre版本和web.xml版本问题
    SQL的几种连接:内连接、左联接、右连接、全连接、交叉连接
    Centos7下面安装eclipse
    Centos7 下编译 Openjdk8
  • 原文地址:https://www.cnblogs.com/z360519549/p/8952020.html
Copyright © 2011-2022 走看看