0
点赞
收藏
分享

微信扫一扫

java BigDecimal 学习及用法

情况

一般情况下使用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;

举报

相关推荐

0 条评论