public class BigDecimal extends Number implementsComparable<BigDecimal> 属性: private volatile BigInteger intVal //BigDecimal的非标度值 private int scale = 0 //BigDecimal的标度值 private volatile transient int precision = 0 //BigDecimal的精度.This field is mutable until set nonzero. private volatile transient String stringCache = null //规范的字符表示 private static final long INFLATED = Long.MIN_VALUE // private transient long intCompact = INFLATED private static final int MAX_COMPACT_DIGITS = 18 private static final int MAX_BIGINT_BITS = 62 private static final long serialVersionUID = 6108874887143696463L
private static final BigDecimal zeroThroughTen[] 缓存0~10的数据 public static final BigDecimal ZERO = zeroThroughTen[0] 值为0,标度为 0。 public static final BigDecimal ONE = zeroThroughTen[1] 值为1,标度为 0。 public static final BigDecimal TEN = zeroThroughTen[10] 值为10,标度为 0。
public BigDecimal(char[] in, int offset, int len) //翻译字符数组为BigDecimal public BigDecimal(char[] in, int offset, int len, MathContext mc) //调用this(in, offset, len);指定精度,if (mc.precision> 0) roundThis(mc) public BigDecimal(char[] in) //调用this(in, 0, in.length) public BigDecimal(char[] in, MathContext mc) //调用this(in,0, in.length, mc) public BigDecimal(String val) //调用this(val.toCharArray(),0, val.length()) public BigDecimal(String val, MathContext mc) //this(val.toCharArray(), 0,val.length()); if (mc.precision > 0)roundThis(mc)
public BigDecimal(double val) //此构造方法的结果有一定的不可预知性,优先选用String参数 public BigDecimal(double val, MathContext mc) //调用this(val);if(mc.precision > 0) roundThis(mc)
public BigDecimal(BigInteger val) //将 BigInteger 转换为 BigDecimal。BigDecimal 的标度是零。 public BigDecimal(BigInteger val, MathContext mc) //将BigInteger 转换为 BigDecimal(根据上下文设置进行舍入)。BigDecimal 的标度为零。 public BigDecimal(BigInteger unscaledVal, int scale) //将 BigInteger 非标度值和 int 标度转换为 BigDecimal。BigDecimal 的值为 (unscaledVal × 10-scale)。 public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc) //
public BigDecimal(int val) //将int转型成BigDecimal public BigDecimal(int val, MathContext mc) //设置精度
public BigDecimal(long val) //将long转型成BigDecimal public BigDecimal(long val, MathContext mc) //设置精度 private BigDecimal(long val, int scale) //Trusted internal constructor private BigDecimal(BigInteger intVal, long val, int scale) //Trusted internalconstructor
public static BigDecimal valueOf(long unscaledVal, intscale) //将 long 非标度值和 int 标度转换为 BigDecimal。 public static BigDecimal valueOf(long val) //将 long 非标度值转换为 BigDecimal。 public static BigDecimal valueOf(double val) //将 double非标度值转换为 BigDecimal。
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, introundingMode) //除法 public BigDecimal divide(BigDecimal divisor, int scale, RoundingModeroundingMode) //除法 public BigDecimal divide(BigDecimal divisor, int roundingMode) //舍入模式 public BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode) //舍入模式 public BigDecimal divide(BigDecimal divisor) //返回一个BigDecimal,其值为 (this / divisor),其首选标度为 (this.scale() – divisor.scale() public BigDecimal divide(BigDecimal divisor, MathContext mc) //除法,带精度
public BigDecimal divideToIntegralValue(BigDecimal divisor)//返回整数型的除法值//返回 BigDecimal,其值为向下舍入所得商值 (this / divisor) 的整数部分。 public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc) //带精度
public BigDecimal remainder(BigDecimal divisor) //返回剩余部分数据//数据的值为this.subtract(this.divideToIntegralValue(divisor).multiply(divisor)) public BigDecimal remainder(BigDecimal divisor, MathContext mc) //带精度
public BigDecimal[] divideAndRemainder(BigDecimaldivisor)//除并且返回剩余值 public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc) //带精度
public BigDecimal pow(int n) //N次方 public BigDecimal pow(int n, MathContext mc) //带精度
public BigDecimal abs() //绝对值 public BigDecimal abs(MathContext mc) //带精度 public BigDecimal negate() //取负 public BigDecimal negate(MathContext mc) public BigDecimal plus() //与negate()对称 public BigDecimal plus(MathContext mc) //带精度
public int signum() //正负号函数 public int scale() //返回数的标度 public int precision() //返回数的精度 public BigInteger unscaledValue() //返回其值为此 BigDecimal 的非标度值的 BigInteger。(计算 (this *10this.scale())。)
数值的舍入方式 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
public BigDecimal round(MathContext mc) //对数值进行舍入 public BigDecimal setScale(int newScale, RoundingMode roundingMode) //设置新的标度 public BigDecimal setScale(int newScale, int roundingMode) //设置新的标度 public BigDecimal setScale(int newScale) //调用setScale(newScale,ROUND_UNNECESSARY) public BigDecimal movePointLeft(int n) //小数点左移 public BigDecimal movePointRight(int n) //小数点右移 public BigDecimal scaleByPowerOfTen(int n) //返回其数值等于(this * 10n) 的 BigDecimal。该结果的标度为 (this.scale() – n)。 public BigDecimal stripTrailingZeros() //去除尾部多余的零 public int compareTo(BigDecimal val) //比较数值的大小 public boolean equals(Object x) //判断是否相等
public BigDecimal min(BigDecimal val) //返回较小值 public BigDecimal max(BigDecimal val) //返回较大值
public int hashCode() //hashCode public String toString() //返回字符串表示形式 public String toEngineeringString() //科学计数法 public String toPlainString() //不带指数的表示 private String getValueString(int signum, String intString, int scale) //返回digit.digit字符串的形式
public BigInteger toBigInteger() public BigInteger toBigIntegerExact() public long longValue() public long longValueExact()
// These constants are only initialized if needed /** BigInteger equal to Long.MIN_VALUE. */ private static BigInteger LONGMIN = null; /** BigInteger equal to Long.MAX_VALUE. */ private static BigInteger LONGMAX = null;
public int intValue() public int intValueExact() public short shortValueExact() public byte byteValueExact() public float floatValue() public double doubleValue()