我是靠谱客的博主 个性高山,最近开发中收集的这篇文章主要介绍关于DigDecimal的使用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

当进行算术运行时,就得用到BigDecimal类
用法:比如1/3

BigDecimal number=new BigDecimal(1).divide(new BigDecimal(3),2, RoundingMode.HALF_EVEN);
        System.out.println(number);

在BigDecimal类的实现对象中要运算就得以BigDecimal类的实现对象形式存在,就是被除数和除数都是BigDecimal类的实现对象
当执行除法时,它会要求你精确到小数点后几位,上面的2的位置就是。
它还有一个确认模式就是上面的RoundingMode.HALF_EVEN,说简单点就是当精确到几位时是要将后面的舍去,还是进一,这样的一套规则。
RoundingMode是一个公共的枚举类

Enum Constant描述
CEILING向正无穷大
DOWN向零舍入
FLOOR负无穷大
HALF_DOWN“最近邻居”舍入,除非两个邻居是等距的,在这种情况下舍入向下
HALF_EVEN圆周向“最近的邻居” ,除非两个邻居的距离相等,在这种情况下,圆周向偶数邻居
HALF_UP“最近的邻居”舍入 ,除非两个邻居的距离相等,在这种情况舍入向上
UNNECESSARY断言所请求的操作有一个精确的结果,不需要舍入
UP舍入模式从零舍入

本人在用这个类的对象进行乘法运算时出现以下这一幕

BigDecimal number=new BigDecimal(0.55).multiply(new BigDecimal(100));
        System.out.println(number);

结果显示为

55.0000000000000044408920985006261616945266723632812500

乘法中有两个方法一个是参数,这个参数也是BigDecimal类的对象

用这个方法但用解决上面的问题直接用除法就是除以1

另外一个就是BigDecimal类的对象,MathContext的对象
MathContext是一个类来的哦

MathContext​(int setPrecision)
构建一个新的MathContext ,以指定的精确度及HALF_UP rounding mode. 舍入方式
看见这种舍入模式没有
MathContext​(int setPrecision, RoundingMode setRoundingMode)
构建一个新的MathContext , 以指定的精确度及舍入方式修整

MathContext​(String val)
从一个格式为mathcontext的字符串创建

这个MathContext类就是用来规范其有效的数字的个数,以及其舍入的
有效数字就是指小数号前数字和小数号后之前,如果小数号前一位为0的话不算,就只能算小数号后面的如0.333有效位是3

BigDecimal number=new BigDecimal(1).divide(new BigDecimal(3),new MathContext(5));

MathContext类与 RoundingMode类经常交替使用,如果是经常性使用 HALF_UP模式的话完全可以用MathContext类匿名对象来用
MathContext类还有一些静态属性这些属性能够快速的帮助我实现规范

static MathContext	DECIMAL128	
这个有效个数为34位,使用的是 HALF_EVEN模式
static MathContext	DECIMAL32	
这个有效个数为7位使用的是HALF_EVEN模式
static MathContext	DECIMAL64	
这个有效个数为16位,使用的是 HALF_EVEN模式
static MathContext	UNLIMITED	
这个其设置具有无限精度算术所需的值

最后

以上就是个性高山为你收集整理的关于DigDecimal的使用的全部内容,希望文章能够帮你解决关于DigDecimal的使用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部