BigDecimal数据类型(初始化,加减乘除,基本操作)

BigDecimal为大数据类型,更精准的计算

1.初始化

1.1 字符串做参数 
BigDecimal a =new BigDecimal(“1.22”); 
doublevalue:1.2199999999999999733546474089962430298328399658203125 
1.2 数字做参数 
BigDecimal a =new BigDecimal(1.22); 
construct with a String value: 1.22 


注意1:String 构造方法是完全可预知的:写入 newBigDecimal(“0.1”) 将创建一个 BigDecimal,它正好等于预期的 0.1。因此,比较而言,通常建议优先使用String构造方法。

注意2:当double必须用作BigDecimal的源时,请注意,此构造方法提供了一个准确转换;它不提供与以下操作相同的结果:先使用Double.toString(double)方法,然后使用BigDecimal(String)构造方法,将double转换为String。要获取该结果,请使用static valueOf(double)方法

2.除法运算 
a=a.divide(b,2) 
a=a.divide(b,2,BigDecimal.’BigDecimal.舍入方式’) 
2为保留小数点位数 

通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常

解决方法:给divide方法设置精度及保留几位小数。

BigDecimal枚举常量用法摘要 : 
CEILING 
向正无限大方向舍入的舍入模式。 
DOWN 
向零方向舍入的舍入模式。 
FLOOR 
向负无限大方向舍入的舍入模式。 
HALF_DOWN 
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向下舍入。 
HALF_EVEN 
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。 
HALF_UP 
向最接近数字方向舍入的舍入模式,如果与两个相邻数字的距离相等,则向上舍入。 
UNNECESSARY 
用于断言请求的操作具有精确结果的舍入模式,因此不需要舍入。 
UP 
远离零方向舍入的舍入模式。
 

3. 其他取值操作

3.1 a.max (b) //比较取最大值

3.2 a.min(b) //比较取最小值

3.3 a.abs()//取最绝对值

3.4 a.negate()//取相反数

猜你喜欢

转载自blog.csdn.net/johnt25/article/details/86743334