jdk源码学习java.math包
阅读JDK源代码java.math中的
java.math.BigDecimal
java.math.BigInteger
java.math.BitSieve
java.math.MathContext
java.math.MutableBigInteger
java.math.RoundingMode
java.math.SignedMutableBigInteger
1java.math.BigDecimal
不可变的、任意精度的有符号十进制数。BigDecimal 由任意精度的整数非标度值 和 32 位的整数标度 (scale) 组成。
如果为零或正数,则标度是小数点后的位数。如果为负数,则将该数的非标度值乘以 10 的负 scale 次幂。因此,BigDecimal 表示的数值是unscaledValue × 10^(-scale)。
提供以下操作:算术、标度操作、舍入、比较、哈希算法和格式转换。
可以通过两种类型的操作来处理 BigDecimal 的标度:标度/舍入操作和小数点移动操作。标度/舍入操作(setScale 和 round)返回 BigDecimal,其值近似地(或精确地)等于操作数的值,但是其标度或精度是指定的值;即:它们会增加或减少对其值具有最小影响的存储数的精度。小 数点移动操作(movePointLeft 和 movePointRight)返回从操作数创建的 BigDecimal,创建的方法是按指定方向将小数点移动一个指定距离。
BigDecimal 的自然排序与 equals 方法不一致。
public class BigDecimal extends Number implements Comparable<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 //规范的字符表示学习java的学习方法
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) //调用CharArray(), 0, val.length())
public BigDecimal(String val, MathContext mc) //CharArray(), 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 internal constructor
public static BigDecimal valueOf(long unscaledVal, int scale) //将 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) //加法,带精度
private BigDecimal[] preAlign(BigDecimal lhs, BigDecimal augend,long padding, 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) //返回一个 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(BigDecimal divisor)//除并且返回剩余值
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) //带精度

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。