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

  • 相关阅读:
    【转载】Myeclipse如何自动创建hibernate
    win7 64位mysql安装及navicat 解压版
    NuGet套件还原步骤(以vs2012为例)
    Html.DropDownListFor() 二级联动 ($.getJSON)
    ModelState验证部分属性
    asp.net mvc发送邮件
    SpringBoot的热部署
    SpringBoot 入门demo
    集群、负载均衡、微服务、分布式的概念
    SpringBoot 简介
  • 原文地址:https://www.cnblogs.com/z360519549/p/8952020.html
Copyright © 2020-2023  润新知