📖BigDecimal类实现高精度符点运算

发布: 2019-05-17
热度: 55
趋势: 55
权重: 6
🎯

JAVA中默认的double和float数据类型进行符点运算时会造成精度丢失,比如小数点后出现无限个9,而java.math包提供的BigDecimal类则是专门用于提供高精度的符点运算能力。

构造初始化

BigDecimal 类提供了四种构造方法进行对象的初始化。

分别可以传入:int、double、long、string。

特别注意:即使表面上看起来一样的值,不同类型传入的最终值是不一样,比如 doule 类型的数据小数位会变得很长

BigDecimal 类对象可以与 int、double、long、string 进行互转。

//创建BigDecimal类对象
BigDecimal intBD = new BigDecimal(123);
BigDecimal douBD = new BigDecimal(123.123);
BigDecimal strBD = new BigDecimal("123");
BigDecimal sdrBD = new BigDecimal("123.123");

四类基本运算

BigDecimal 类提供了数学世界中的四类基本运算方法。

//创建两个运算值
BigDecimal noOne = new BigDecimal(123);
BigDecimal noTwo = new BigDecimal(123);
//加法
BigDecimal addAs = noOne.add(noTwo);
//减法
BigDecimal subAs = noOne.subtract(noTwo); 
//乘法
BigDecimal mulAs = noOne.multiply(noTwo);
//除法
//需要注意除法被除数不能为0哦
BigDecimal divAs = noOne.divide(noTwo);
//另一种写法(直接新建构造类)
BigDecimal othAs = noOne.add(new BigDecimal(123));

除法精度控制

BigDecimal 类除法可以提供精度控制能力,具有三个入参分别是:被除数、小数位数、尾数取值模式。

//除法实例,保留三位小数,四舍五入模式
BigDecimal divAs = noOne.divide(noTwo,3,BigDecimal.ROUND_HALF_UP);
//BigDecimal.ROUND_DOWN			删除多余位数
//BigDecimal.ROUND_UP			删除多余位数,最后一位进一位
//BigDecimal.ROUND_HALF_UP		四舍五入
//BigDecimal.ROUND_HALF_DOWN	五舍六入

数据精度控制

BigDecimal 类独立提供了对数据进行精度控制的方法。

//对已有数据进行精度控制,逡巡上方的几类模式,保留三位四舍五入
noTwo = noTwo.setScale(3,BigDecimal.ROUND_HALF_UP);
//此处与上方相同支持多种形式

数值格式化

//建立货币格式化引用
NumberFormat currency = NumberFormat.getCurrencyInstance();
//建立百分比格式化用
NumberFormat percent = NumberFormat.getPercentInstance();
//百分比小数点最多3位
percent.setMaximumFractionDigits(3);
//对数据进行货币格式化
currency.format(mulAs);
//对数据进行百分比格式化
percent.format(divAs);

数值大小比较

BigDecimal 类的大小比较,返回一个 int 结果,有三个结果 1 表示大于,0 表示等于,-1 表示小于。

int cpAs = noOne.compareTo(noTwo);
//BigDecimal类还提供了一些用于比较的常量,比如BigDecimal.ZERO
//与零进行比较
int cpAs = noOne.compareTo(BigDecimal.ZERO);

结尾小结

实际上没什么需要小结的,常用实例已在上方列举出来了!

当前文章暂无讨论,留下脚印吧!
大纲
  • 构造初始化
  • 四类基本运算
  • 除法精度控制
  • 数据精度控制
  • 数值格式化
  • 数值大小比较
  • 结尾小结
提交成功,请等待审核通过后全面展示!

发表评论

昵称
邮箱
链接
签名
评论

温馨提示:系统将通过浏览器临时记忆您曾经填写的个人信息且支持修改,评论提交后仅自己可见,内容需要经过审核后方可全面展示。

选择头像