• BigDecimal最基础用法【转】


    BigDecimal最基础用法

    用字符串生成的BigDecimal是不会丢精度的. 

    • 简单除法.
    public class DemoBigDecimal {
    
        public static void main(String[] args) {
            String value = "1235";
            if( !value.isEmpty() ){
                BigDecimal bd = new BigDecimal(value);
                bd = bd.divide(new BigDecimal(1000),3,RoundingMode.HALF_UP);//精确到小数点后3位,且用四舍五入
                value = bd.toString();
                System.out.println(value);
            }
        }
    }

    NumberFormat另一种设精度方法?

    if(value instanceof Number) {//浮点数精度进行兼容
        java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
        nf.setGroupingUsed(false);
        nf.setMaximumIntegerDigits(30);
        nf.setMaximumFractionDigits(8);
        //nf.setMinimumFractionDigits(2);
        BeanTool.setAttributeByString(bean, entry.getKey(), nf.format(value));
        continue;
    }

    DecimalFormat保留小数位数

    保留小数:java DecimalFormat format 方法的使用

    public class test {
        public static void main(String[] args) {
            String ret = getConvertData(01.0003);
            System.out.println(ret);
        }
        
        public static String getConvertData(Double data){
            String ret = "";
            java.text.DecimalFormat df = new java.text.DecimalFormat("0.00"); 
            ret = df.format(data);
            return ret;
        }
    
    }

    BigDecimal比较大小

    【重点】在进行比较后时一定要让原始构造函数的参数保持一致, 不然极有可能得不到预期结果,见下例

    import java.math.BigDecimal;
    
    public class TempTest {
        public static void main(String[] args) throws Exception {
            BigDecimal bd1 = new BigDecimal("1.23");
            BigDecimal bd2 = new BigDecimal("1.230");
            BigDecimal bd3 = new BigDecimal(1.23);
            BigDecimal bd4 = new BigDecimal(1.230);
            //compareTo()返回的结果是int类型,-1表示小于,0是等于,1是大于。
            System.out.println(bd1.compareTo(bd2));//"1.23"和"1.230"相等,打印0
            System.out.println(bd3.compareTo(bd4));//1.23和1.230相等,打印0
            //【重点】在进行比较后时一定要让原始构造函数的参数保持一致, 不然极有可能得不到预期结果,见下例
            System.out.println(bd1.compareTo(bd3));//根据结果"1.23"和1.23,前者更大,一定要避开这种类型不匹配的比较.
    
            BigDecimal bd5 = new BigDecimal(2);
            System.out.println(bd4.compareTo(bd5));//1.230比2小,打印-1
            System.out.println(bd5.compareTo(bd4));//2比1.230大,打印1
        }
    }

    参考

    BigDecimal加减乘除计算以及比较大小==>https://www.cnblogs.com/whatlonelytear/p/5138989.html

  • 相关阅读:
    P2731 骑马修栅栏 Riding the Fences
    P1351 联合权值
    [脚本]为所有节点挂载磁盘
    [转]expect的安装
    挂载磁盘linux
    [转]Mac 科研常用软件
    [转]error while loading shared libraries 错误解决办法总结
    linux安装SVN
    Java web项目在linux环境下自动编译和部署脚本
    个人所得税计算方法
  • 原文地址:https://www.cnblogs.com/whatlonelytear/p/5138989.html
Copyright © 2020-2023  润新知