- BigDecimal
java.math包中提供的API类BigDecimal,用来对超过16位有效位的数进行精确的运算。双精度浮点型变量double可以处理16位有效数。在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。
方法 | 表达式 | 描述 | |
---|---|---|---|
基本数据类型 —> BigDecimal | new BigDecimal(int val)、new BigDecimal(double val) new BigDecimal(long val)、new BigDecimal(String val) |
这几个都是常用的构造器,他们返回的对象都是BigDecimal对象。换而言之, 将各个类型的值转换为BigDecimal对象,就是通过构造器。 | |
BigDecimal —> 基本数据类型 | toString( )、doubleValue( )、floatValue( )、longValue( )、intValue( ) | ||
运算 |
加 | add(BigDecimal augend) | |
减 | subtract(BigDecimal subtrahend) | ||
乘 | multiply(BigDecimal multiplicand) | ||
最大值 | max(BigDecimal val) | ||
最小值 | min(BigDecimal val) | ||
绝对值 | abs() | ||
相反数 | negate() | ||
除 | divide(BigDecimal divisor, int scale, int roundingMode) | divisor: 被除数;scale: 保留小数位数; roundingMode: 保留小数时采用的规则。一般使用BigDecimal.ROUND_HALF_UP(四舍五入) |
|
四舍五入 | setScale(int newScale, RoundingMode roundingMode) | newScale: 指定要保留几位;roundingMode: 取舍规则,可选参数 ,默认为 ROUND_UNNECESSARY | |
小数保留规则 | ROUND_CEILING //向正无穷方向舍入 ROUND_DOWN //向零方向舍入 ROUND_UP //向远离0的方向舍入 ROUND_FLOOR //向负无穷方向舍入 ROUND_HALF_DOWN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数结果为1.5。相当于五舍六入 ROUND_HALF_EVEN //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN ROUND_HALF_UP //向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6。相当于四舍五入 ROUND_UNNECESSARY //计算结果是精确的,不需要舍入模式 |
||
比较 | boolean equals(Object x) | scale(保留的小数位)相同 && 值相同 | |
int compareTo(BigDecimal val) | 仅比较值。值等于val返回0,大于返回1,小于返回-1 |