zoukankan      html  css  js  c++  java
  • Java保留小数点后两位,解决精度丢失问题

    实例一、保留小数点后两位,四舍五入

    //使用BigDecimal,更精准的计算,避免小数点后出现精准度丢失现象。比如:25.230000000001
    //初始化值是Stirng类型,如果是Double,也转为String:Double.toString(double)方法
    //小数点保留两位
    BigDecimal num1 = new BigDecimal("0.00");
    BigDecimal num2 = new BigDecimal("0.00");
    
    
    BigDecimal bd1 = new BigDecimal("256");
    BigDecimal bd2 = new BigDecimal(Double.toString(0.22));
    //加减乘除操作,精度取小数点后两位
    num1 = bd1.multiply(bd2).setScale(2, BigDecimal.ROUND_HALF_UP); 
    num2 = bd1.subtract(num1).setScale(2, BigDecimal.ROUND_HALF_UP);

    BigDecimal 处理小数

    setScale(1) 表示保留一位小数,默认用四舍五入方式
    
    setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3
    
    setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4
    
    setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入(5则向上入),2.35变成2.4
    
    setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入(5则向下舍),2.35变成2.3

    实例二、展示结果为百分比格式,百分比后面两位小数

    DecimalFormat df = new DecimalFormat("0.00%");
    //入参为double数字
    BigDecimal bd = new BigDecimal(150 / 120);    
    //因为是百分比,这里数字是4
    String billRate = df.format(bd.setScale(4, BigDecimal.ROUND_HALF_UP).doubleValue());
  • 相关阅读:
    列举⼀下 HTTP 中关于 "资源缓存" 的头部指令 (Head) 有哪些 ? 并简要介绍⼀下设置的规则 ?
    从输入URL到页面渲染完成
    git删除远程仓库分支
    @font-face的format属性
    【React】的行内样式不支持rgb
    前端面试题
    常见元素居中的五种方法
    数组存储表格数据
    java.util.Arrays类
    for-each循环
  • 原文地址:https://www.cnblogs.com/Donnnnnn/p/12512159.html
Copyright © 2011-2022 走看看