歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Java jdk源代碼的Math包

Java jdk源代碼的Math包

日期:2017/3/1 9:42:14   编辑:Linux編程

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

編寫高質量代碼 改善Java程序的151個建議 PDF高清完整版 http://www.linuxidc.com/Linux/2014-06/103388.htm

Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm

Java對象初始化順序的簡單驗證 http://www.linuxidc.com/Linux/2014-02/96220.htm

Java對象值傳遞和對象傳遞的總結 http://www.linuxidc.com/Linux/2012-12/76692.htm

Java對象序列化ObjectOutputStream和ObjectInputStream示例 http://www.linuxidc.com/Linux/2012-08/68360.htm

1、java.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 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) //加法,帶精度

private BigDecimal[] preAlign(BigDecimal lhs, BigDecimalaugend,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, 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()

public BigDecimal ulp()
private String layoutChars(boolean sci)
private static BigInteger tenToThe(int n)
private static BigInteger TENPOWERS[]
private static long longTenToThe(long val, int n)
private static long thresholds[][]
private static boolean compactLong(long val) //返回(val!= Long.MIN_VALUE)
private BigDecimal inflate()
private static void matchScale(BigDecimal[] val)

private synchronized voidreadObject(java.io.ObjectInputStream s)
private void writeObject(java.io.ObjectOutputStream s)

private int digitLength()
private static int[] ilogTable
private int intLength(int x)
private BigDecimal stripZerosToMatchScale(long preferredScale)
private int checkScale(long val)
private BigDecimal roundOp(MathContext mc)
private void roundThis(MathContext mc)
private BigDecimal doRound(MathContext mc)
private BigDecimal dropDigits(MathContext mc, int drop)
private static int longCompareTo(long x, long y)
private static void print(String name, BigDecimal bd) //內部打印格式
private BigDecimal audit() //審計

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-07/104298p2.htm

Copyright © Linux教程網 All Rights Reserved