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 对象。

  • 相关阅读:
    Linux下Zookeeper安装使用
    Dubbo的@Reference和@Service说明
    java.lang.ClassNotFoundException: org.I0Itec.zkclient.IZkStateListener异常解决
    Java 开发常用工具
    Vue自动化路由(基于Vue-Router)开篇
    HTML5 开发APP( 支付宝支付)
    关于微信网页缓存的问题
    小程序(仿微信发布说说功能)
    移动端九宫格抽奖源码
    H5 + 开发App(分享功能)
  • 原文地址:https://www.cnblogs.com/z360519549/p/8952020.html
Copyright © 2011-2022 走看看