情况
一般情况下使用double和float计算时总是精度改变问题困扰着开发者们,以及使用金额计算的情况要求开发者们必须要使用BigDecimal,BigDecimal是java.math中的类,它在处理数据精度方面解决了开发者的困扰。
构造器
BigDecimal(BigInteger val)
将BigInteger转化为BigDecimal。
BigDecimal(BigInteger unscaledVal, int scale)
将BigInteger转换为BigDecimal。这个值为(unscaledVal × 10-scale)
BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
将BigInteger的值转换为BigDecimal,并进行舍入。这个值为(unscaledVal × 10-scale),并且通过mc设置的指定精度和舍入模式
BigDecimal(BigInteger val, MathContext mc)
根据上下文设置将BigInteger转换为BigDecimal。
BigDecimal(char[] in)
将字符数组表示BigDecimal转换为BigDecimal,接受与BigDecimal(String) 构造函数相同的字符序列。
BigDecimal(char[] in, int offset, int len)
将字符数组表示的BigDecimal转换为BigDecimal,接受与BigDecimal(String) 构造函数相同的字符序列,同时允许指定子数组。
BigDecimal(char[] in, int offset, int len, MathContext mc)
将字符数组表示的BigDecimal转换为BigDecimal,接受与BigDecimal(String) 构造函数相同的字符序列,同时允许指定子数组并根据上下文设置进行舍入。
BigDecimal(char[] in, MathContext mc)
将字符数组表示的BigDecimal转换为BigDecimal,接受与BigDecimal(String) 构造函数相同的字符序列,并根据上下文设置进行舍入。
BigDecimal(double val)
将a double转换为a 的二进制浮点值BigDecimal的精确十进制表示double。
BigDecimal(double val, MathContext mc)
根据上下文设置将double转换为BigDecimal,并进行舍入。
BigDecimal(int val)
将一个int转化成一个BigDecimal。
BigDecimal(int val, MathContext mc)
根据上下文设置将int转化为BigDecimal,并进行舍入。
BigDecimal(long val)
将long转化成BigDecimal。
BigDecimal(long val, MathContext mc)
根据上下文设置将long转换BigDecimal,并进行舍入。
BigDecimal(String val)
将字符串表示的BigDecimal转换为BigDecimal。
BigDecimal(String val, MathContext mc)
将字符串表示的BigDecimal转换为BigDecimal,接受与BigDecimal(String)构造函数相同的字符串 ,并根据上下文设置进行舍入。
静态方法
public static BigDecimal valueOf(long unscaledVal, int scale)
public static BigDecimal valueOf(long val)
public static BigDecimal valueOf(long unscaledVal, int scale, int prec)
public static BigDecimal valueOf(BigInteger intVal, int scale, int prec)
public static BigDecimal zeroValueOf(int scale)
public static BigDecimal valueOf(double val)
方法
public BigDecimal add(BigDecimal augend)
public BigDecimal add(BigDecimal augend, MathContext mc)
加法
public BigDecimal subtract(BigDecimal subtrahend)
public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
减法
public BigDecimal multiply(BigDecimal multiplicand)
public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
乘法
public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
public BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
public BigDecimal divide(BigDecimal divisor, int roundingMode)
public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
public BigDecimal divide(BigDecimal divisor)
public BigDecimal divide(BigDecimal divisor, MathContext mc)
public BigDecimal divideToIntegralValue(BigDecimal divisor)
public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
除法
public BigDecimal remainder(BigDecimal divisor, MathContext mc)
求余数
public BigDecimal[] divideAndRemainder(BigDecimal divisor)
public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
求商和余数
public BigDecimal pow(int n)
public BigDecimal pow(int n, MathContext mc)
功率
public BigDecimal abs()
public BigDecimal abs(MathContext mc)
绝对值
public BigDecimal negate()
相反数
public BigDecimal plus()
public BigDecimal plus(MathContext mc)
四舍五入
public int signum()
正负数 返回 -1 0 1
public int scale()
精度
public int precision()
小数位
public BigInteger unscaledValue()
去掉小数点
public BigDecimal round(MathContext mc)
四舍五入 同plus
public BigDecimal setScale(int newScale, RoundingMode roundingMode)
public BigDecimal setScale(int newScale, int roundingMode)
public BigDecimal setScale(int newScale)
更改精度
public BigDecimal movePointLeft(int n)
public BigDecimal movePointRight(int n)
移动小数点
public BigDecimal scaleByPowerOfTen(int n)
移动功率小数点
public BigDecimal stripTrailingZeros()
移除末尾的0
public int compareTo(BigDecimal val)
比较大小 -1, 0, or 1
public boolean equals(Object x)
比较一个可能是 BigDecimal的数据类型 相等
public BigDecimal min(BigDecimal val)
取两数较小值
public BigDecimal max(BigDecimal val)
取两数较大值
public int hashCode()
public String toString()
字符串表现
public String toEngineeringString()
科学计数
public String toPlainString()
字符串表现
public BigInteger toBigInteger()
转为大整型,四舍五入
public BigInteger toBigIntegerExact()
转为大整型,舍弃小数位
public long longValue()
public long longValueExact()
转为长整型
public int intValue()
public int intValueExact()
转为整形
public short shortValueExact()
转为短整型
public byte byteValueExact()
转为字节
public float floatValue()
转为浮点
public double doubleValue()
转为大浮点
public BigDecimal ulp()
获取精度的格式 10、1、0.1、0.001
精度 Rounding Modes
public final static int ROUND_UP = 0;
public final static int ROUND_DOWN = 1;
public final static int ROUND_CEILING = 2;
public final static int ROUND_FLOOR = 3;
public final static int ROUND_HALF_UP = 4;
public final static int ROUND_HALF_DOWN = 5;
public final static int ROUND_HALF_EVEN = 6;
public final static int ROUND_UNNECESSARY = 7;