|
JavaTM Platform Standard Ed. 6 |
|||||||||
| ÉÏÒ»¸öÀà ÏÂÒ»¸öÀà | ¿ò¼Ü ÎÞ¿ò¼Ü | |||||||||
| ÕªÒª£º ǶÌ× | ×Ö¶Î | ¹¹Ôì·½·¨ | ·½·¨ | ÏêϸÐÅÏ¢£º ×Ö¶Î | ¹¹Ôì·½·¨ | ·½·¨ | |||||||||
java.lang.Objectjava.lang.Number
java.math.BigDecimal
public class BigDecimal
²»¿É±äµÄ¡¢ÈÎÒ⾫¶ÈµÄÓзûºÅÊ®½øÖÆÊý¡£BigDecimal ÓÉÈÎÒ⾫¶ÈµÄÕûÊý·Ç±ê¶ÈÖµ ºÍ 32 λµÄÕûÊý±ê¶È (scale) ×é³É¡£Èç¹ûΪÁã»òÕýÊý£¬Ôò±ê¶ÈÊÇСÊýµãºóµÄλÊý¡£Èç¹ûΪ¸ºÊý£¬Ôò½«¸ÃÊýµÄ·Ç±ê¶ÈÖµ³ËÒÔ 10 µÄ¸º scale ´ÎÃÝ¡£Òò´Ë£¬BigDecimal ±íʾµÄÊýÖµÊÇ (unscaledValue × 10-scale)¡£
BigDecimal ÀàÌṩÒÔϲÙ×÷£ºËãÊõ¡¢±ê¶È²Ù×÷¡¢ÉáÈë¡¢±È½Ï¡¢¹þÏ£Ëã·¨ºÍ¸ñʽת»»¡£toString() ·½·¨Ìṩ BigDecimal µÄ¹æ·¶±íʾÐÎʽ¡£
BigDecimal ÀàʹÓû§ÄÜÍêÈ«¿ØÖÆÉáÈëÐÐΪ¡£Èç¹ûδָ¶¨ÉáÈëģʽ£¬²¢ÇÒÎÞ·¨±íʾ׼ȷ½á¹û£¬ÔòÅ׳öÒ»¸öÒì³££»·ñÔò£¬Í¨¹ýÏò¸Ã²Ù×÷ÌṩÊʵ±µÄ MathContext ¶ÔÏ󣬿ÉÒÔ¶ÔÒÑÑ¡ÔñµÄ¾«¶ÈºÍÉáÈëģʽִÐмÆËã¡£ÔÚÈκÎÇé¿öÏ£¬¿ÉÒÔΪÉáÈë¿ØÖÆÌṩ°ËÖÖÉáÈëģʽ¡£Ê¹ÓôËÀࣨÀýÈ磬ROUND_HALF_UP£©ÖеÄÕûÊý×Ö¶ÎÀ´±íʾÉáÈëģʽÒѹýʱ£»Ó¦¸ÄΪʹÓà RoundingMode enum£¨ÀýÈ磬RoundingMode.HALF_UP£©µÄö¾ÙÖµ¡£
µ±Îª MathContext ¶ÔÏóÌṩ 0 µÄ¾«¶ÈÉèÖã¨ÀýÈ磬MathContext.UNLIMITED£©Ê±£¬ËãÊõÔËËãÊÇ׼ȷµÄ£¬ËüÃÇÊDz»²ÉÓÃÈκΠMathContext ¶ÔÏóµÄËãÊõ·½·¨¡££¨ÕâÊÇµÚ 5 °æÖ®Ç°µÄ°æ±¾Ö§³ÖµÄΨһÐÐΪ¡££©ÎªÁ˼ÆËã׼ȷ½á¹û£¬²»Ê¹Óø½´ø 0 ¾«¶ÈÉèÖÃµÄ MathContext ¶ÔÏóµÄÉáÈëģʽÉèÖã¬Òò´ËÓë¸Ã¶ÔÏóÎ޹ء£ÔÚ³ý·¨ÖУ¬×¼È·µÄÉÌ¿ÉÄÜÊÇÒ»¸öÎÞÏÞ³¤µÄÊ®½øÖÆÀ©Õ¹£»ÀýÈ磬1 ³ýÒÔ 3 ËùµÃµÄÉÌ¡£Èç¹ûÉ̾ßÓÐÎÞÇîµÄÊ®½øÖÆÀ©Õ¹£¬µ«ÊÇÖ¸¶¨Á˸òÙ×÷·µ»Ø×¼È·½á¹û£¬ÔòÅ׳ö ArithmeticException¡£·ñÔò£¬ÏñÆäËû²Ù×÷ÄÇÑù£¬·µ»Ø³ý·¨ÔËËãµÄ׼ȷ½á¹û¡£
µ±¾«¶ÈÉèÖò»Îª 0 ʱ£¬BigDecimal Ëã·¨µÄ¹æÔòÍêÈ«·ûºÏ ANSI X3.274-1996 ºÍ ANSI X3.274-1996/AM 1-2000£¨ 7.4 ½Ú£©Öж¨ÒåµÄËã·¨µÄ¿ÉÑ¡²Ù×÷ģʽ¡£ÓëÉÏÊö±ê×¼²»Í¬£¬BigDecimal °üÀ¨¶àÖÖÉáÈëģʽ£¬ËüÃǶÔÓÚ°æ±¾ 5 ÒÔǰµÄ BigDecimal °æ±¾Öеijý·¨ÊÇÇ¿ÖÆÐԵġ£ÕâЩ ANSI ±ê×¼ºÍ BigDecimal ¹æ·¶Ö®¼äµÄÈκγåÍ»¶¼°´ÕÕÓÐÀûÓÚ BigDecimal µÄ·½Ê½½øÐнâ¾ö¡£
ÓÉÓÚͬһÊýÖµ¿ÉÒÔÓв»Í¬µÄ±íʾÐÎʽ£¨¾ßÓв»Í¬µÄ±ê¶È£©£¬Òò´ËÔËËãºÍÉáÈëµÄ¹æÔò±ØÐëͬʱָ¶¨ÊýÖµ½á¹ûºÍ½á¹û±íʾÐÎʽÖÐËùÓõıê¶È¡£
Ò»°ãÇé¿öÏ£¬µ±×¼È·½á¹û£¨ÔÚ³ý·¨ÖУ¬¿ÉÄÜÓÐÎÞÏÞ¶à룩±È·µ»ØµÄÊýÖµ¾ßÓиü¶àλÊýʱ£¬ÉáÈëģʽºÍ¾«¶ÈÉèÖÃÈ·¶¨²Ù×÷ÈçºÎ·µ»Ø¾ßÓÐÓÐÏÞλÊýµÄ½á¹û¡£ Ê×ÏÈ£¬MathContext µÄ precision ÉèÖÃÖ¸¶¨Òª·µ»ØµÄ×ÜλÊý£»ÕâÈ·¶¨Á˽á¹ûµÄ¾«¶È¡£Î»Êý¼ÆÊý´Ó׼ȷ½á¹ûµÄ×î×ó±ßµÄ·ÇÁãÊý×Ö¿ªÊ¼¡£ÉáÈëģʽȷ¶¨¶ªÆúµÄβ²¿Î»ÊýÈçºÎÓ°Ïì·µ»ØµÄ½á¹û¡£
¶ÔÓÚËùÓÐËãÊõÔËËã·û£¬ÔËËãµÄÖ´Ðз½Ê½ÊÇ£¬Ê×ÏȼÆËã׼ȷµÄÖмä½á¹û£¬È»ºó£¬Ê¹ÓÃÑ¡ÔñµÄÉáÈëģʽ½«ÆäÉáÈëΪ¾«¶ÈÉèÖã¨ÈçÓбØÒª£©Ö¸¶¨µÄλÊý¡£Èç¹û²»·µ»Ø×¼È·½á¹û£¬Ôò½«¶ªÆú׼ȷ½á¹ûµÄijЩÊýλ¡£µ±ÉáÈëÔö¼ÓÁË·µ»Ø½á¹ûµÄ´óСʱ£¬Ç°µ¼Êý×Ö“9”µÄ½øÎ»´«²¥¿ÉÄܻᴴ½¨ÐµÄÊýλ¡£ÀýÈ磬½«Öµ 999.9 ÉáÈëΪÈýλÊý×Ö£¬ÔòÔÚÊýÖµÉϵÈÓÚһǧ£¬±íʾΪ 100×101¡£ÔÚÕâÖÖÇé¿öÏ£¬Ð嵀 "1" ÊÇ·µ»Ø½á¹ûµÄǰµ¼Êýλ¡£
³ýÁËÂß¼µÄ׼ȷ½á¹ûÍ⣬ÿÖÖËãÊõÔËËã¶¼ÓÐÒ»¸ö±íʾ½á¹ûµÄÊ×Ñ¡±ê¶È¡£Ï±íÁгöÁËÿ¸öÔËËãµÄÊ×Ñ¡±ê¶È¡£
| ÔËËã | ½á¹ûµÄÊ×Ñ¡±ê¶È |
|---|---|
| ¼Ó | max(addend.scale(), augend.scale()) |
| ¼õ | max(minuend.scale(), subtrahend.scale()) |
| ³Ë | multiplier.scale() + multiplicand.scale() |
| ³ý | dividend.scale() - divisor.scale() |
ÉáÈë֮ǰ£¬Âß¼µÄ׼ȷÖмä½á¹ûµÄ±ê¶ÈÊǸÃÔËËãµÄÊ×Ñ¡±ê¶È¡£Èç¹ûÓà precision λÊýÎÞ·¨±íʾ׼ȷµÄÊýÖµ½á¹û£¬ÔòÉáÈë»áÑ¡ÔñÒª·µ»ØµÄÒ»×éÊý×Ö£¬²¢½«¸Ã½á¹ûµÄ±ê¶È´ÓÖмä½á¹ûµÄ±ê¶È¼õСµ½¿ÉÒÔ±íʾʵ¼Ê·µ»ØµÄ precision λÊýµÄ×îС±ê¶È¡£Èç¹û׼ȷ½á¹û¿ÉÒÔʹÓÃ×î¶à precision ¸öÊý×Ö±íʾ£¬Ôò·µ»Ø¾ßÓÐ×î½Ó½üÊ×Ñ¡±ê¶ÈµÄ±ê¶ÈµÄ½á¹û±íʾÐÎʽ¡£ÓÈÆäÊÇ£¬Í¨¹ýÒÆ³ý½áβÁã²¢¼õÉÙ±ê¶È£¬¿ÉÒÔÓÃÉÙÓÚ precision ¸öÊý×ÖÀ´±íʾ׼ȷµÄ¿É±íʾµÄÉÌ¡£ÀýÈ磬ʹÓà floor ÉáÈëģʽ½«½á¹ûÉáÈëΪÈý¸öÊý×Ö£¬
19/100 = 0.19 // integer=19, scale=2
µ«ÊÇ
21/110 = 0.190 // integer=190, scale=3
×¢Ò⣬¶ÔÓÚ¼Ó¡¢¼õºÍ³Ë£¬±ê¶ÈµÄËõ¼õÁ¿½«µÈÓÚ¶ªÆúµÄ׼ȷ½á¹ûµÄÊý×ÖλÖÃÊý¡£Èç¹ûÉáÈëµ¼Ö½øÎ»´«²¥´´½¨Ò»¸öеĸß룬Ôòµ±Î´´´½¨ÐµÄÊýλʱ£¬»á¶ªÆú¸Ã½á¹ûµÄ¸½¼ÓÊý×Ö¡£
ÆäËû·½·¨¿ÉÄÜÓëÉáÈëÓïÒåÉÔ΢²»Í¬¡£ÀýÈ磬ʹÓÃÖ¸¶¨µÄËã·¨µÄ pow ·½·¨µÃµ½µÄ½á¹û¿ÉÄÜż¶û²»Í¬ÓÚÉáÈëµÃµ½µÄËãÊõ½á¹û£¬Èç×îºóһλÓжà¸öµ¥Î»£¨ulp£©¡£
¿ÉÒÔͨ¹ýÁ½ÖÖÀàÐ͵IJÙ×÷À´´¦Àí BigDecimal µÄ±ê¶È£º±ê¶È/ÉáÈë²Ù×÷ºÍСÊýµãÒÆ¶¯²Ù×÷¡£±ê¶È/ÉáÈë²Ù×÷£¨setScale ºÍ round£©·µ»Ø BigDecimal£¬ÆäÖµ½üËÆµØ£¨»ò¾«È·µØ£©µÈÓÚ²Ù×÷ÊýµÄÖµ£¬µ«ÊÇÆä±ê¶È»ò¾«¶ÈÊÇÖ¸¶¨µÄÖµ£»¼´£ºËüÃÇ»áÔö¼Ó»ò¼õÉÙ¶ÔÆäÖµ¾ßÓÐ×îСӰÏìµÄ´æ´¢ÊýµÄ¾«¶È¡£Ð¡ÊýµãÒÆ¶¯²Ù×÷£¨movePointLeft ºÍ movePointRight£©·µ»Ø´Ó²Ù×÷Êý´´½¨µÄ BigDecimal£¬´´½¨µÄ·½·¨Êǰ´Ö¸¶¨·½Ïò½«Ð¡ÊýµãÒÆ¶¯Ò»¸öÖ¸¶¨¾àÀë¡£
ΪÁ˼ò½àÃ÷ÁËÆð¼û£¬Õû¸ö BigDecimal ·½·¨µÄÃèÊöÖж¼Ê¹ÓÃÁËα´úÂ롣α´úÂë±í´ïʽ (i + j) ÊÇ“ÆäֵΪ BigDecimal i ¼Ó BigDecimal j µÄ BigDecimal”µÄ¼òд¡£Î±´úÂë±í´ïʽ (i == j) ÊÇ“µ±ÇÒ½öµ± BigDecimal i ±íʾÓë BigDecimal j ÏàͬµÄֵʱ£¬ÔòΪ true”µÄ¼òд¡£¿ÉÒÔÀàËÆµØ½âÊÍÆäËûα´úÂë±í´ïʽ¡£·½À¨ºÅÓÃÓÚ±íÊ¾ÌØ¶¨µÄ BigInteger ºÍ¶¨Òå BigDecimal ÖµµÄ±ê¶È¶Ô£»ÀýÈ磬[19, 2] ±íʾ BigDecimal ÔÚÊýÖµÉϵÈÓÚ 0.19£¬±ê¶ÈÊÇ 2¡£
×¢£ºÈç¹û BigDecimal ¶ÔÏóÓÃ×÷ SortedMap Öеļü»ò SortedSet ÖеÄÔªËØ£¬ÔòÓ¦ÌØ±ðСÐÄ£¬ÒòΪ BigDecimal µÄ×ÔÈ»ÅÅÐòÓë equals ·½·¨²»Ò»Ö¡£Óйظü¶àÐÅÏ¢£¬Çë²Î¼û Comparable¡¢SortedMap »ò SortedSet¡£
µ±ÎªÈκÎÊäÈë²ÎÊý´«µÝ null ¶ÔÏóÒýÓÃʱ£¬´ËÀàµÄËùÓз½·¨ºÍ¹¹Ôì·½·¨¶¼½«Å׳ö NullPointerException¡£
BigInteger,
MathContext,
RoundingMode,
SortedMap,
SortedSet,
ÐòÁл¯±í¸ñ| ×Ö¶ÎÕªÒª | |
|---|---|
static BigDecimal |
ONE
ֵΪ 1£¬±ê¶ÈΪ 0¡£ |
static int |
ROUND_CEILING
½Ó½üÕýÎÞÇî´óµÄÉáÈëģʽ¡£ |
static int |
ROUND_DOWN
½Ó½üÁãµÄÉáÈëģʽ¡£ |
static int |
ROUND_FLOOR
½Ó½ü¸ºÎÞÇî´óµÄÉáÈëģʽ¡£ |
static int |
ROUND_HALF_DOWN
Ïò“×î½Ó½üµÄ”Êý×ÖÉáÈ룬Èç¹ûÓëÁ½¸öÏàÁÚÊý×ֵľàÀëÏàµÈ£¬ÔòΪÉÏÉáÈëµÄÉáÈëģʽ¡£ |
static int |
ROUND_HALF_EVEN
Ïò“×î½Ó½üµÄ”Êý×ÖÉáÈ룬Èç¹ûÓëÁ½¸öÏàÁÚÊý×ֵľàÀëÏàµÈ£¬ÔòÏòÏàÁڵĿÊýÉáÈë¡£ |
static int |
ROUND_HALF_UP
Ïò“×î½Ó½üµÄ”Êý×ÖÉáÈ룬Èç¹ûÓëÁ½¸öÏàÁÚÊý×ֵľàÀëÏàµÈ£¬ÔòΪÏòÉÏÉáÈëµÄÉáÈëģʽ¡£ |
static int |
ROUND_UNNECESSARY
¶ÏÑÔÇëÇóµÄ²Ù×÷¾ßÓо«È·µÄ½á¹û£¬Òò´Ë²»ÐèÒªÉáÈë¡£ |
static int |
ROUND_UP
ÉáÈëÔ¶ÀëÁãµÄÉáÈëģʽ¡£ |
static BigDecimal |
TEN
ֵΪ 10£¬±ê¶ÈΪ 0¡£ |
static BigDecimal |
ZERO
ֵΪ 0£¬±ê¶ÈΪ 0¡£ |
| ¹¹Ôì·½·¨ÕªÒª | |
|---|---|
BigDecimal(BigInteger val)
½« BigInteger ת»»Îª BigDecimal¡£ |
|
BigDecimal(BigInteger unscaledVal,
int scale)
½« BigInteger ·Ç±ê¶ÈÖµºÍ int ±ê¶Èת»»Îª BigDecimal¡£ |
|
BigDecimal(BigInteger unscaledVal,
int scale,
MathContext mc)
½« BigInteger ·Ç±ê¶ÈÖµºÍ int ±ê¶Èת»»Îª BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
|
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)
½« double ת»»Îª 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) ¹¹Ôì·½·¨ÏàͬµÄ×Ö·û´®£¨°´ÕÕÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
|
| ·½·¨ÕªÒª | |
|---|---|
BigDecimal |
abs()
·µ»Ø BigDecimal£¬ÆäֵΪ´Ë BigDecimal µÄ¾ø¶ÔÖµ£¬Æä±ê¶ÈΪ this.scale()¡£ |
BigDecimal |
abs(MathContext mc)
·µ»ØÆäֵΪ´Ë BigDecimal ¾ø¶ÔÖµµÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
BigDecimal |
add(BigDecimal augend)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this + augend)£¬Æä±ê¶ÈΪ max(this.scale(), augend.scale())¡£ |
BigDecimal |
add(BigDecimal augend,
MathContext mc)
·µ»ØÆäֵΪ (this + augend) µÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
byte |
byteValueExact()
½«´Ë BigDecimal ת»»Îª byte£¬ÒÔ¼ì²é¶ªÊ§µÄÐÅÏ¢¡£ |
int |
compareTo(BigDecimal val)
½«´Ë BigDecimal ÓëÖ¸¶¨µÄ BigDecimal ±È½Ï¡£ |
BigDecimal |
divide(BigDecimal divisor)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this / divisor)£¬ÆäÊ×Ñ¡±ê¶ÈΪ (this.scale() - divisor.scale())£»Èç¹ûÎÞ·¨±íʾ׼ȷµÄÉÌÖµ£¨ÒòΪËüÓÐÎÞÇîµÄÊ®½øÖÆÀ©Õ¹£©£¬ÔòÅ׳ö ArithmeticException¡£ |
BigDecimal |
divide(BigDecimal divisor,
int roundingMode)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this / divisor)£¬Æä±ê¶ÈΪ this.scale()¡£ |
BigDecimal |
divide(BigDecimal divisor,
int scale,
int roundingMode)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this / divisor)£¬Æä±ê¶ÈΪָ¶¨±ê¶È¡£ |
BigDecimal |
divide(BigDecimal divisor,
int scale,
RoundingMode roundingMode)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this / divisor)£¬Æä±ê¶ÈΪָ¶¨±ê¶È¡£ |
BigDecimal |
divide(BigDecimal divisor,
MathContext mc)
·µ»ØÆäֵΪ (this / divisor) µÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
BigDecimal |
divide(BigDecimal divisor,
RoundingMode roundingMode)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this / divisor)£¬Æä±ê¶ÈΪ this.scale()¡£ |
BigDecimal[] |
divideAndRemainder(BigDecimal divisor)
·µ»ØÓÉÁ½¸öÔªËØ×é³ÉµÄ BigDecimal Êý×飬¸ÃÊý×é°üº¬ divideToIntegralValue µÄ½á¹û£¬ºó¸ú¶ÔÁ½¸ö²Ù×÷Êý¼ÆËãËùµÃµ½µÄ remainder¡£ |
BigDecimal[] |
divideAndRemainder(BigDecimal divisor,
MathContext mc)
·µ»ØÓÉÁ½¸öÔªËØ×é³ÉµÄ BigDecimal Êý×飬¸ÃÊý×é°üº¬ divideToIntegralValue µÄ½á¹û£¬ºó¸ú¸ù¾ÝÉÏÏÂÎÄÉèÖöÔÁ½¸ö²Ù×÷Êý½øÐÐÉáÈë¼ÆËãËùµÃµ½µÄ remainder µÄ½á¹û¡£ |
BigDecimal |
divideToIntegralValue(BigDecimal divisor)
·µ»Ø BigDecimal£¬ÆäֵΪÏòÏÂÉáÈëËùµÃÉÌÖµ (this / divisor) µÄÕûÊý²¿·Ö¡£ |
BigDecimal |
divideToIntegralValue(BigDecimal divisor,
MathContext mc)
·µ»Ø BigDecimal£¬ÆäֵΪ (this / divisor) µÄÕûÊý²¿·Ö¡£ |
double |
doubleValue()
½«´Ë BigDecimal ת»»Îª double¡£ |
boolean |
equals(Object x)
±È½Ï´Ë BigDecimal ÓëÖ¸¶¨µÄ Object µÄÏàµÈÐÔ¡£ |
float |
floatValue()
½«´Ë BigDecimal ת»»Îª float¡£ |
int |
hashCode()
·µ»Ø´Ë BigDecimal µÄ¹þÏ£Âë¡£ |
int |
intValue()
½«´Ë BigDecimal ת»»Îª int¡£ |
int |
intValueExact()
½«´Ë BigDecimal ת»»Îª int£¬ÒÔ¼ì²é¶ªÊ§µÄÐÅÏ¢¡£ |
long |
longValue()
½«´Ë BigDecimal ת»»Îª long¡£ |
long |
longValueExact()
½«´Ë BigDecimal ת»»Îª long£¬ÒÔ¼ì²é¶ªÊ§µÄÐÅÏ¢¡£ |
BigDecimal |
max(BigDecimal val)
·µ»Ø´Ë BigDecimal ºÍ val µÄ×î´óÖµ¡£ |
BigDecimal |
min(BigDecimal val)
·µ»Ø´Ë BigDecimal ºÍ val µÄ×îСֵ¡£ |
BigDecimal |
movePointLeft(int n)
·µ»ØÒ»¸ö BigDecimal£¬ËüµÈЧÓÚ½«¸ÃÖµµÄСÊýµãÏò×óÒÆ¶¯ n λ¡£ |
BigDecimal |
movePointRight(int n)
·µ»ØÒ»¸ö BigDecimal£¬ËüµÈЧÓÚ½«¸ÃÖµµÄСÊýµãÏòÓÒÒÆ¶¯ n λ¡£ |
BigDecimal |
multiply(BigDecimal multiplicand)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this × multiplicand)£¬Æä±ê¶ÈΪ (this.scale() + multiplicand.scale())¡£ |
BigDecimal |
multiply(BigDecimal multiplicand,
MathContext mc)
·µ»ØÆäֵΪ (this × multiplicand) µÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
BigDecimal |
negate()
·µ»Ø BigDecimal£¬ÆäֵΪ (-this)£¬Æä±ê¶ÈΪ this.scale()¡£ |
BigDecimal |
negate(MathContext mc)
·µ»ØÆäֵΪ (-this) µÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
BigDecimal |
plus()
·µ»Ø BigDecimal£¬ÆäֵΪ (+this)£¬Æä±ê¶ÈΪ this.scale()¡£ |
BigDecimal |
plus(MathContext mc)
·µ»ØÆäֵΪ (+this) µÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
BigDecimal |
pow(int n)
·µ»ØÆäֵΪ (thisn) µÄ BigDecimal£¬×¼È·¼ÆËã¸ÃÃÝ£¬Ê¹Æä¾ßÓÐÎÞÏÞ¾«¶È¡£ |
BigDecimal |
pow(int n,
MathContext mc)
·µ»ØÆäֵΪ (thisn) µÄ BigDecimal¡£ |
int |
precision()
·µ»Ø´Ë BigDecimal µÄ¾«¶È¡£ |
BigDecimal |
remainder(BigDecimal divisor)
·µ»ØÆäֵΪ (this % divisor) µÄ BigDecimal¡£ |
BigDecimal |
remainder(BigDecimal divisor,
MathContext mc)
·µ»ØÆäֵΪ (this % divisor) µÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
BigDecimal |
round(MathContext mc)
·µ»Ø¸ù¾Ý MathContext ÉèÖýøÐÐÉáÈëºóµÄ BigDecimal¡£ |
int |
scale()
·µ»Ø´Ë BigDecimal µÄ±ê¶È¡£ |
BigDecimal |
scaleByPowerOfTen(int n)
·µ»ØÆäÊýÖµµÈÓÚ (this * 10n) µÄ BigDecimal¡£ |
BigDecimal |
setScale(int newScale)
·µ»ØÒ»¸ö BigDecimal£¬Æä±ê¶ÈΪָ¶¨Öµ£¬ÆäÖµÔÚÊýÖµÉϵÈÓÚ´Ë BigDecimal µÄÖµ¡£ |
BigDecimal |
setScale(int newScale,
int roundingMode)
·µ»ØÒ»¸ö BigDecimal£¬Æä±ê¶ÈΪָ¶¨Öµ£¬Æä·Ç±ê¶Èֵͨ¹ý´Ë BigDecimal µÄ·Ç±ê¶ÈÖµ³ËÒÔ»ò³ýÒÔÊ®µÄÊʵ±´ÎÃÝÀ´È·¶¨£¬ÒÔά»¤Æä×ÜÖµ¡£ |
BigDecimal |
setScale(int newScale,
RoundingMode roundingMode)
·µ»Ø BigDecimal£¬Æä±ê¶ÈΪָ¶¨Öµ£¬Æä·Ç±ê¶Èֵͨ¹ý´Ë BigDecimal µÄ·Ç±ê¶ÈÖµ³ËÒÔ»ò³ýÒÔÊ®µÄÊʵ±´ÎÃÝÀ´È·¶¨£¬ÒÔά»¤Æä×ÜÖµ¡£ |
short |
shortValueExact()
½«´Ë BigDecimal ת»»Îª short£¬ÒÔ¼ì²é¶ªÊ§µÄÐÅÏ¢¡£ |
int |
signum()
·µ»Ø´Ë BigDecimal µÄÕý¸ººÅº¯Êý¡£ |
BigDecimal |
stripTrailingZeros()
·µ»ØÊýÖµÉϵÈÓÚ´ËСÊý£¬µ«´Ó¸Ã±íʾÐÎÊ½ÒÆ³ýËùÓÐβ²¿ÁãµÄ BigDecimal¡£ |
BigDecimal |
subtract(BigDecimal subtrahend)
·µ»ØÒ»¸ö BigDecimal£¬ÆäֵΪ (this - subtrahend)£¬Æä±ê¶ÈΪ max(this.scale(), subtrahend.scale())¡£ |
BigDecimal |
subtract(BigDecimal subtrahend,
MathContext mc)
·µ»ØÆäֵΪ (this - subtrahend) µÄ BigDecimal£¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£ |
BigInteger |
toBigInteger()
½«´Ë BigDecimal ת»»Îª BigInteger¡£ |
BigInteger |
toBigIntegerExact()
½«´Ë BigDecimal ת»»Îª BigInteger£¬ÒÔ¼ì²é¶ªÊ§µÄÐÅÏ¢¡£ |
String |
toEngineeringString()
·µ»Ø´Ë BigDecimal µÄ×Ö·û´®±íʾÐÎʽ£¬ÐèÒªÖ¸Êýʱ£¬ÔòʹÓù¤³Ì¼ÆÊý·¨¡£ |
String |
toPlainString()
·µ»Ø²»´øÖ¸Êý×Ö¶ÎµÄ´Ë BigDecimal µÄ×Ö·û´®±íʾÐÎʽ¡£ |
String |
toString()
·µ»Ø´Ë BigDecimal µÄ×Ö·û´®±íʾÐÎʽ£¬Èç¹ûÐèÒªÖ¸Êý£¬ÔòʹÓÿÆÑ§¼ÇÊý·¨¡£ |
BigDecimal |
ulp()
·µ»Ø´Ë BigDecimal µÄ ulp£¨×îºóһλµÄµ¥Î»£©µÄ´óС¡£ |
BigInteger |
unscaledValue()
·µ»ØÆäֵΪ´Ë BigDecimal µÄ·Ç±ê¶ÈÖµ µÄ BigInteger¡£ |
static BigDecimal |
valueOf(double val)
ʹÓà Double.toString(double) ·½·¨ÌṩµÄ double ¹æ·¶µÄ×Ö·û´®±íʾÐÎʽ½« double ת»»Îª BigDecimal¡£ |
static BigDecimal |
valueOf(long val)
½« long ֵת»»Îª¾ßÓÐÁã±ê¶ÈµÄ BigDecimal¡£ |
static BigDecimal |
valueOf(long unscaledVal,
int scale)
½« long ·Ç±ê¶ÈÖµºÍ int ±ê¶Èת»»Îª BigDecimal¡£ |
| ´ÓÀà java.lang.Number ¼Ì³ÐµÄ·½·¨ |
|---|
byteValue, shortValue |
| ´ÓÀà java.lang.Object ¼Ì³ÐµÄ·½·¨ |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| ×Ö¶ÎÏêϸÐÅÏ¢ |
|---|
public static final BigDecimal ZERO
public static final BigDecimal ONE
public static final BigDecimal TEN
public static final int ROUND_UP
public static final int ROUND_DOWN
public static final int ROUND_CEILING
public static final int ROUND_FLOOR
public static final int ROUND_HALF_UP
public static final int ROUND_HALF_DOWN
public static final int ROUND_HALF_EVEN
public static final int ROUND_UNNECESSARY
| ¹¹Ôì·½·¨ÏêϸÐÅÏ¢ |
|---|
public BigDecimal(char[] in,
int offset,
int len)
BigDecimal(String) ¹¹Ôì·½·¨ÏàͬµÄ×Ö·ûÐòÁУ¬Í¬Ê±ÔÊÐíÖ¸¶¨×ÓÊý×é¡£
×¢Ò⣬Èç¹û×Ö·ûÊý×éÖÐÒѾÌṩ×Ö·ûµÄÐòÁУ¬ÔòʹÓô˹¹Ôì·½·¨Òª±È½« char Êý×éת»»Îª×Ö·û´®²¢Ê¹Óà BigDecimal(String) ¹¹Ôì·½·¨¸ü¿ì¡£
in - ×÷ΪԴ×Ö·ûµÄ char Êý×é¡£offset - Òª¼ì²éµÄÊý×éÖеĵÚÒ»¸ö×Ö·û¡£len - Òª¿¼ÂǵÄ×Ö·ûÊý¡£
NumberFormatException - Èç¹û in ²»ÊÇ BigDecimal µÄÓÐЧ±íʾÐÎʽ£¬»òÕß¶¨ÒåµÄ×ÓÊý×é²»ÍêÈ«ÔÚ in ÖС£
public BigDecimal(char[] in,
int offset,
int len,
MathContext mc)
BigDecimal(String) ¹¹Ôì·½·¨ÏàͬµÄ×Ö·ûÐòÁУ¬Í¬Ê±ÔÊÐíÖ¸¶¨×ÓÊý×飬²¢¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈë¡£
×¢Ò⣬Èç¹û×Ö·ûÊý×éÖÐÒѾÌṩ×Ö·ûµÄÐòÁУ¬ÔòʹÓô˹¹Ôì·½·¨Òª±È½« char Êý×éת»»Îª×Ö·û´®²¢Ê¹Óà BigDecimal(String) ¹¹Ôì·½·¨¸ü¿ì¡£
in - ×÷ΪԴ×Ö·ûµÄ char Êý×é¡£offset - Òª¼ì²éµÄÊý×éÖеĵÚÒ»¸ö×Ö·û¡£len - Òª¿¼ÂǵÄ×Ö·ûÊý¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬ÇÒÉáÈëģʽΪ UNNECESSARY¡£
NumberFormatException - Èç¹û in ²»ÊÇ BigDecimal µÄÓÐЧ±íʾÐÎʽ£¬»òÕß¶¨ÒåµÄ×ÓÊý×é²»ÍêÈ«ÔÚ in ÖС£public BigDecimal(char[] in)
BigDecimal(String) ¹¹Ôì·½·¨ÏàͬµÄ×Ö·ûÐòÁС£
×¢Ò⣬Èç¹û×Ö·ûÐòÁÐÒѾ¿ÉÒÔ×÷Ϊһ¸ö×Ö·ûÊý×éʹÓã¬ÔòʹÓô˹¹Ôì·½·¨Òª±È½« char Êý×éת»»Îª×Ö·û´®²¢Ê¹Óà BigDecimal(String) ¹¹Ôì·½·¨¸ü¿ì¡£
in - ×÷ΪԴ×Ö·ûµÄ char Êý×é¡£
NumberFormatException - Èç¹û in ²»ÊÇ BigDecimal µÄÓÐЧ±íʾÐÎʽ¡£
public BigDecimal(char[] in,
MathContext mc)
BigDecimal(String) ¹¹Ôì·½·¨ÏàͬµÄ×Ö·ûÐòÁУ¨¸ù¾ÝÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£
×¢Ò⣬Èç¹û×Ö·ûÐòÁÐÒѾ¿ÉÒÔ×÷Ϊһ¸ö×Ö·ûÊý×éʹÓã¬ÔòʹÓô˹¹Ôì·½·¨Òª±È½« char Êý×éת»»Îª×Ö·û´®²¢Ê¹Óà BigDecimal(String) ¹¹Ôì·½·¨¸ü¿ì¡£
in - ×÷ΪԴ×Ö·ûµÄ char Êý×é¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬ÇÒÉáÈëģʽΪ UNNECESSARY¡£
NumberFormatException - Èç¹û in ²»ÊÇ BigDecimal µÄÓÐЧ±íʾÐÎʽ¡£public BigDecimal(String val)
¸ÃСÊýÓÉСÊýµãÒÔ¼°ºó¸úµÄÁã»ò¸ü¶àÊ®½øÖÆÊý×Ö×é³É¡£×Ö·û´®±ØÐëÖÁÉÙ°üº¬ÕûÊý»òСÊý²¿·ÖÖеÄÒ»¸öÊý×Ö¡£ÓÉ·ûºÅ¡¢ÕûÊýºÍСÊý²¿·Ö×é³ÉµÄÊý×Ö³ÆÎªÓÐЧλÊý¡£
Ö¸ÊýÓÉ×Ö·û 'e'£¨'\u0065') »ò 'E' ('\u0045') ÒÔ¼°ºó¸úµÄÒ»¸ö»ò¶à¸öÊ®½øÖÆÊý×Ö×é³É¡£Ö¸ÊýµÄÖµ±ØÐëλÓÚ Integer.MAX_VALUE (Integer.MIN_VALUE+1) ºÍ Integer.MAX_VALUE£¨°üÀ¨£©Ö®¼ä¡£
¸üÕýʽµØËµ£¬ÒÔÏÂÓï·¨ÃèÊöÁ˴˹¹Ôì·½·¨½ÓÊܵÄ×Ö·û´®£º
- BigDecimalString:
- Signopt Significand Exponentopt
- Sign:
- +
- -
- Significand:
- IntegerPart .FractionPartopt
- . FractionPart
- IntegerPart
- IntegerPart:
- Digits
- FractionPart:
- Digits
- Exponent:
- ExponentIndicator SignedInteger
- ExponentIndicator:
- e
- E
- SignedInteger:
- Signopt Digits
- Digits:
- Digit
- Digits Digit
- Digit:
Character.isDigit(char)¶ÔÆä·µ»Ø true µÄÈκÎ×Ö·û£¬Èç 0¡¢1¡¢2¡¡
·µ»ØµÄ BigDecimal µÄ±ê¶È½«ÊÇСÊý²¿·ÖÖеÄÊý×ÖλÊý£¬Èç¹û¸Ã×Ö·û´®²»°üº¬Ð¡Êýµã£¬Ôò±ê¶ÈΪÁ㣬ÕâÈ¡¾öÓÚ¶ÔÖ¸ÊýµÄµ÷Õû£»Èç¹û×Ö·û´®°üº¬Ò»¸öÖ¸Êý£¬Ôò´Ó±ê¶È¼õÈ¥¸ÃÖ¸Êý¡£µÃµ½µÄ±ê¶ÈÖµ±ØÐëλÓÚ Integer.MIN_VALUE ºÍ Integer.MAX_VALUE£¨°üÀ¨£©Ö®¼ä¡£
Character.digit(char, int) ¼¯Ìṩ´Ó×Ö·ûµ½Êý×ÖµÄÓ³É䣬ÒÔת»»³É»ùÊý 10¡£¸Ã×Ö·û´®²»Äܰüº¬ÈκζîÍâ×Ö·û£¨ÀýÈ磬¿Õ°×£©¡£
ʾÀý£º
·µ»ØµÄ BigDecimal µÄÖµµÈÓÚÓÐЧλÊý × 10 Ö¸Êý¡£¶ÔÓÚ×ó±ßµÄÿ¸ö×Ö·û´®£¬µÃµ½µÄ±íʾÐÎʽ [BigInteger, scale] ÏÔʾÔÚÓұߡ£
"0" [0,0] "0.00" [0,2] "123" [123,0] "-123" [-123,0] "1.23E3" [123,-1] "1.23E+3" [123,-1] "12.3E+7" [123,-6] "12.0" [120,1] "12.3" [123,1] "0.00123" [123,5] "-1.23E-12" [-123,14] "1234.5E-4" [12345,5] "0E+7" [0,-7] "-0" [0,0]
×¢£º¶ÔÓÚ²»ÊÇ float¡¢double NaN ºÍ ±Infinity µÄÖµ£¬´Ë¹¹Ôì·½·¨Óë Float.toString(float) ºÍ Double.toString(double) ·µ»ØµÄÖµ¼æÈÝ¡£Õâͨ³£Êǽ« float »ò double ת»»Îª BigDecimal µÄÊ×Ñ¡·½·¨£¬ÒòΪËü²»»áÓöµ½ BigDecimal(double) ¹¹Ôì·½·¨µÄ²»¿ÉÔ¤ÖªÎÊÌâ¡£
val - BigDecimal µÄ×Ö·û´®±íʾÐÎʽ¡£
NumberFormatException - Èç¹û val ²»ÊÇ BigDecimal µÄÓÐЧ±íʾÐÎʽ¡£public BigDecimal(String val, MathContext mc)
BigDecimal(String) ¹¹Ôì·½·¨ÏàͬµÄ×Ö·û´®£¨°´ÕÕÉÏÏÂÎÄÉèÖýøÐÐÉáÈ룩¡£
val - BigDecimal µÄ×Ö·û´®±íʾÐÎʽ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬ÇÒÉáÈëģʽΪ UNNECESSARY¡£
NumberFormatException - Èç¹û val ²»ÊÇ BigDecimal µÄÓÐЧ±íʾÐÎʽ¡£public BigDecimal(double val)
×¢£º
Double.toString(double) ·½·¨£¬È»ºóʹÓà BigDecimal(String) ¹¹Ôì·½·¨£¬½« double ת»»Îª String¡£Òª»ñÈ¡¸Ã½á¹û£¬ÇëʹÓà static valueOf(double) ·½·¨¡£
val - Ҫת»»Îª BigDecimal µÄ double Öµ¡£
NumberFormatException - Èç¹û val ΪÎÞÇî´ó»ò NaN¡£
public BigDecimal(double val,
MathContext mc)
´Ë¹¹Ôì·½·¨µÄ½á¹ûÓÐÒ»¶¨µÄ²»¿ÉÔ¤ÖªÐÔ£¬Í¨³£²»½¨ÒéʹÓÃËü£¬Çë²Î¼û BigDecimal(double) ¹¹Ôì·½·¨ÏÂÃæµÄ×¢ÊÍ¡£
val - Ҫת»»Îª BigDecimal µÄ double Öµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇ RoundingMode Ϊ UNNECESSARY¡£
NumberFormatException - Èç¹û val ΪÎÞÇî´ó»ò NaN¡£public BigDecimal(BigInteger val)
val - Ҫת»»Îª BigDecimal µÄ BigInteger Öµ¡£public BigDecimal(BigInteger val, MathContext mc)
val - Ҫת»»Îª BigDecimal µÄ BigInteger Öµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal(BigInteger unscaledVal, int scale)
unscaledVal - BigDecimal µÄ·Ç±ê¶ÈÖµ¡£scale - BigDecimal µÄ±ê¶È¡£public BigDecimal(BigInteger unscaledVal, int scale, MathContext mc)
unscaledVal - BigDecimal µÄ·Ç±ê¶ÈÖµ¡£scale - BigDecimal µÄ±ê¶È¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal(int val)
val - Ҫת»»Îª BigDecimal µÄ int Öµ¡£
public BigDecimal(int val,
MathContext mc)
val - Ҫת»»Îª BigDecimal µÄ int Öµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal(long val)
val - Ҫת»»Îª BigDecimal µÄ long Öµ¡£
public BigDecimal(long val,
MathContext mc)
val - Ҫת»»Îª BigDecimal µÄ long Öµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£| ·½·¨ÏêϸÐÅÏ¢ |
|---|
public static BigDecimal valueOf(long unscaledVal, int scale)
unscaledVal - BigDecimal µÄ·Ç±ê¶ÈÖµ¡£scale - BigDecimal µÄ±ê¶È¡£
public static BigDecimal valueOf(long val)
val - BigDecimal 掙歜
public static BigDecimal valueOf(double val)
Double.toString(double) ·½·¨ÌṩµÄ double ¹æ·¶µÄ×Ö·û´®±íʾÐÎʽ½« double ת»»Îª BigDecimal¡£
×¢£ºÕâͨ³£Êǽ« double£¨»ò float£©×ª»¯Îª BigDecimal µÄÊ×Ñ¡·½·¨£¬ÒòΪ·µ»ØµÄÖµµÈÓÚ´Ó¹¹Ôì BigDecimal£¨Ê¹Óà Double.toString(double) µÃµ½µÄ½á¹û£©µÃµ½µÄÖµ¡£
val - Ҫת»»Îª BigDecimal µÄ double¡£
NumberFormatException - Èç¹û val ΪÎÞÇî´ó»ò NaN¡£public BigDecimal add(BigDecimal augend)
augend - ½«Ìí¼Óµ½´Ë BigDecimal ÖеÄÖµ¡£
public BigDecimal add(BigDecimal augend, MathContext mc)
augend - ½«Ìí¼Óµ½´Ë BigDecimal ÖеÄÖµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal subtract(BigDecimal subtrahend)
subtrahend - ´Ó´Ë BigDecimal ¼õÈ¥µÄÖµ¡£
public BigDecimal subtract(BigDecimal subtrahend, MathContext mc)
subtrahend - ´Ó´Ë BigDecimal ¼õÈ¥µÄÖµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal multiply(BigDecimal multiplicand)
multiplicand - ³ËÒÔ´Ë BigDecimal µÄÖµ¡£
public BigDecimal multiply(BigDecimal multiplicand, MathContext mc)
multiplicand - ³ËÒÔ´Ë BigDecimal µÄÖµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal divide(BigDecimal divisor, int scale, int roundingMode)
Ïà¶ÔÓÚ´ËÒÅÁô·½·¨£¬Ó¦ÓÅÏÈʹÓÃÐ嵀 divide(BigDecimal, int, RoundingMode) ·½·¨¡£
divisor - ´Ë BigDecimal Òª³ýÒÔµÄÖµ¡£scale - Òª·µ»ØµÄ BigDecimal É̵ıê¶È¡£roundingMode - ÒªÓ¦ÓõÄÉáÈëģʽ¡£
ArithmeticException - Èç¹û divisor ΪÁ㣬Ôò roundingMode==ROUND_UNNECESSARY ºÍÖ¸¶¨µÄ±ê¶È²»×ãÒÔ׼ȷµØ±íʾÏà³ýµÄ½á¹û¡£
IllegalArgumentException - Èç¹û roundingMode ²»±íʾһ¸öÓÐЧµÄÉáÈëģʽ¡£ROUND_UP,
ROUND_DOWN,
ROUND_CEILING,
ROUND_FLOOR,
ROUND_HALF_UP,
ROUND_HALF_DOWN,
ROUND_HALF_EVEN,
ROUND_UNNECESSARYpublic BigDecimal divide(BigDecimal divisor, int scale, RoundingMode roundingMode)
divisor - ´Ë BigDecimal Òª³ýÒÔµÄÖµ¡£scale - Òª·µ»ØµÄ BigDecimal É̵ıê¶È¡£roundingMode - ÒªÓ¦ÓõÄÉáÈëģʽ¡£
ArithmeticException - Èç¹û divisor ΪÁ㣬Ôò roundingMode==RoundingMode.UNNECESSARY ºÍÖ¸¶¨µÄ±ê¶È²»×ãÒÔ׼ȷµØ±íʾÏà³ýµÄ½á¹û¡£public BigDecimal divide(BigDecimal divisor, int roundingMode)
Ïà¶ÔÓÚ´ËÒÅÁô·½·¨£¬Ó¦ÓÅÏÈʹÓÃÐ嵀 divide(BigDecimal, RoundingMode) ·½·¨¡£
divisor - ´Ë BigDecimal Òª³ýÒÔµÄÖµ¡£roundingMode - ÒªÓ¦ÓõÄÉáÈëģʽ¡£
ArithmeticException - Èç¹û divisor==0 »òÕß roundingMode==ROUND_UNNECESSARY ºÍ this.scale() ²»×ãÒÔ׼ȷµØ±íʾÏà³ýµÄ½á¹û¡£
IllegalArgumentException - Èç¹û roundingMode ²»±íʾһ¸öÓÐЧµÄÉáÈëģʽ¡£ROUND_UP,
ROUND_DOWN,
ROUND_CEILING,
ROUND_FLOOR,
ROUND_HALF_UP,
ROUND_HALF_DOWN,
ROUND_HALF_EVEN,
ROUND_UNNECESSARYpublic BigDecimal divide(BigDecimal divisor, RoundingMode roundingMode)
divisor - ´Ë BigDecimal Òª³ýÒÔµÄÖµ¡£roundingMode - ÒªÓ¦ÓõÄÉáÈëģʽ¡£
ArithmeticException - Èç¹û divisor==0 »òÕß roundingMode==RoundingMode.UNNECESSARY ºÍ this.scale() ²»×ãÒÔ׼ȷµØ±íʾÏà³ýµÄ½á¹û¡£public BigDecimal divide(BigDecimal divisor)
divisor - ´Ë BigDecimal ÒªÏà³ýµÄÖµ¡£
ArithmeticException - Èç¹û׼ȷµÄÉÌֵûÓÐÎÞÇîµÄÊ®½øÖÆÀ©Õ¹public BigDecimal divide(BigDecimal divisor, MathContext mc)
divisor - ´Ë BigDecimal Òª³ýÒÔµÄÖµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY »ò mc.precision == 0£¬²¢ÇÒÉÌÖµ¾ßÓÐÎÞÇîµÄÊ®½øÖÆÀ©Õ¹¡£public BigDecimal divideToIntegralValue(BigDecimal divisor)
(this.scale() - divisor.scale())¡£
divisor - ´Ë BigDecimal Òª³ýÒÔµÄÖµ¡£
ArithmeticException - Èç¹û divisor==0public BigDecimal divideToIntegralValue(BigDecimal divisor, MathContext mc)
(this.scale() - divisor.scale())¡£Èç¹û׼ȷÉÌÖµµÄÕûÊý²¿·ÖÐèÒªµÄλÊý¶àÓÚ mc.precision£¬ÔòÅ׳ö ArithmeticException¡£
divisor - ´Ë BigDecimal ÒªÏà³ýµÄÖµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û divisor==0
ArithmeticException - Èç¹û mc.precision > 0£¬²¢ÇҸýá¹ûÐèÒªµÄ¾«¶È´óÓÚ mc.precision¡£public BigDecimal remainder(BigDecimal divisor)
ÓàÊýÓÉ this.subtract(this.divideToIntegralValue(divisor).multiply(divisor)) ¸ø³ö¡£×¢Ò⣬Õâ²»ÊÇÄ£²Ù×÷£¨½á¹û¿ÉÒÔΪ¸º£©¡£
divisor - ´Ë BigDecimal Òª³ýÒÔµÄÖµ¡£
ArithmeticException - Èç¹û divisor==0public BigDecimal remainder(BigDecimal divisor, MathContext mc)
ÓàÊýÓÉ this.subtract(this.divideToIntegralValue(divisor, mc).multiply(divisor)) ¸ø³ö¡£×¢Ò⣬Õâ²»ÊÇÄ£²Ù×÷£¨½á¹û¿ÉÒÔΪ¸º£©¡£
divisor - ´Ë BigDecimal ÒªÏà³ýµÄÖµ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û divisor==0
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÉáÈëģʽΪ UNNECESSARY£¬»òÕß mc.precision > 0£¬²¢ÇÒ this.divideToIntgralValue(divisor) µÄ½á¹ûÒªÇóµÄ¾«¶È´óÓÚ mc.precision¡£divideToIntegralValue(java.math.BigDecimal, java.math.MathContext)public BigDecimal[] divideAndRemainder(BigDecimal divisor)
×¢Ò⣬Èç¹ûͬʱÐèÒªÕûÊýÉ̺ÍÓàÊý£¬Ôò´Ë·½·¨±È·Ö±ðʹÓà divideToIntegralValue ºÍ remainder ·½·¨¸ü¿ìËÙ£¬ÒòΪÏà³ý½öÐèÖ´ÐÐÒ»´Î¡£
divisor - ´Ë BigDecimal ÒªÏà³ýµÄÖµºÍ¼ÆËãµÄÓàÊý¡£
ArithmeticException - Èç¹û divisor==0divideToIntegralValue(java.math.BigDecimal, java.math.MathContext),
remainder(java.math.BigDecimal, java.math.MathContext)public BigDecimal[] divideAndRemainder(BigDecimal divisor, MathContext mc)
×¢Ò⣬Èç¹ûͬʱÐèÒªÕûÊýÉ̺ÍÓàÊý£¬Ôò´Ë·½·¨±È·Ö±ðʹÓà divideToIntegralValue ºÍ remainder ·½·¨¸ü¿ìËÙ£¬ÒòΪÏà³ý½öÐèÖ´ÐÐÒ»´Î¡£
divisor - ´Ë BigDecimal ÒªÏà³ýµÄÖµºÍ¼ÆËãµÄÓàÊý¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û divisor==0
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÉáÈëģʽΪ UNNECESSARY£¬»òÕß mc.precision > 0£¬²¢ÇÒ this.divideToIntgralValue(divisor) µÄ½á¹ûÒªÇóµÄ¾«¶È´óÓÚ mc.precision¡£divideToIntegralValue(java.math.BigDecimal, java.math.MathContext),
remainder(java.math.BigDecimal, java.math.MathContext)public BigDecimal pow(int n)
²ÎÊý n ±ØÐëÔÚ 0 µ½ 999999999£¨°üÀ¨£©Ö®¼ä¡£ZERO.pow(0) ·µ»Ø ONE¡£
×¢Ò⣬δÀ´°æ±¾¿ÉÄÜ»áÀ©Õ¹´Ë·½·¨ÔÊÐíµÄÖ¸Êý·¶Î§¡£
n - ´Ë BigDecimal µÄÃÝ¡£
ArithmeticException - Èç¹û n ³¬³ö·¶Î§¡£public BigDecimal pow(int n, MathContext mc)
X3.274-1996 Ë㷨Ϊ£º
ONE£¨¼´Ê¹ this ΪÁ㣩£¬·ñÔò
n - ´Ë BigDecimal µÄÃÝ¡£mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û¸Ã½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY£¬»òÕß n ³¬³ö·¶Î§¡£public BigDecimal abs()
public BigDecimal abs(MathContext mc)
mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal negate()
public BigDecimal negate(MathContext mc)
mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£public BigDecimal plus()
´Ë·½·¨½ö·µ»Ø´Ë BigDecimal£¬¸Ã·½·¨ÓëÒ»Ôª¼õ·½·¨ negate() ¶Ô³Æ¡£
negate()public BigDecimal plus(MathContext mc)
´Ë·½·¨µÄЧ¹ûÓë round(MathContext) ·½·¨µÄЧ¹ûÏàͬ¡£
mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹û½á¹û²»×¼È·£¬µ«ÊÇÉáÈëģʽΪ UNNECESSARY¡£round(MathContext)public int signum()
public int scale()
public int precision()
ÁãÖµµÄ¾«¶ÈÊÇ 1¡£
public BigInteger unscaledValue()
public BigDecimal round(MathContext mc)
´Ë·½·¨µÄЧ¹ûÓë plus(MathContext) ·½·¨µÄЧ¹ûÏàͬ¡£
mc - ҪʹÓõÄÉÏÏÂÎÄ¡£
ArithmeticException - Èç¹ûÉáÈëģʽΪ UNNECESSARY£¬²¢ÇÒ BigDecimal ²Ù×÷ÒªÇó½øÐÐÉáÈë¡£plus(MathContext)public BigDecimal setScale(int newScale, RoundingMode roundingMode)
newScale - Òª·µ»ØµÄ BigDecimal ÖµµÄ±ê¶È¡£roundingMode - ÒªÓ¦ÓõÄÉáÈëģʽ¡£
ArithmeticException - Èç¹û roundingMode==UNNECESSARY£¬²¢ÇÒÖ¸¶¨µÄ±ê¶È²Ù×÷ÒªÇó½øÐÐÉáÈë¡£RoundingModepublic BigDecimal setScale(int newScale, int roundingMode)
×¢Ò⣬ÓÉÓÚ BigDecimal ¶ÔÏóÊDz»¿É±äµÄ£¬´Ë·½·¨µÄµ÷Óò»»á µ¼Ö³õʼ¶ÔÏó±»Ð޸ģ¬ÕâÓëʹÓÃÃûΪ setX ±äÒì×Ö¶Î X ·½·¨µÄ³£¹æÔ¼¶¨Ïà·´¡£Ïà·´£¬setScale ·µ»Ø¾ßÓÐÊʵ±±ê¶ÈµÄ¶ÔÏó£»·µ»ØµÄ¶ÔÏó²»Ò»¶¨ÊÇзÖÅäµÄ¡£
Ïà¶ÔÓÚ´ËÒÅÁô·½·¨£¬Ó¦ÓÅÏÈʹÓÃÐ嵀 setScale(int, RoundingMode) ·½·¨¡£
newScale - Òª·µ»ØµÄ BigDecimal ÖµµÄ±ê¶È¡£roundingMode - ÒªÓ¦ÓõÄÉáÈëģʽ¡£
ArithmeticException - Èç¹û roundingMode==ROUND_UNNECESSARY£¬²¢ÇÒÖ¸¶¨µÄ±ê¶È²Ù×÷ÒªÇó½øÐÐÉáÈë¡£
IllegalArgumentException - Èç¹û roundingMode ²»±íʾһ¸öÓÐЧµÄÉáÈëģʽ¡£ROUND_UP,
ROUND_DOWN,
ROUND_CEILING,
ROUND_FLOOR,
ROUND_HALF_UP,
ROUND_HALF_DOWN,
ROUND_HALF_EVEN,
ROUND_UNNECESSARYpublic BigDecimal setScale(int newScale)
´Ëµ÷ÓÃͨ³£ÓÃÓÚÔö¼Ó±ê¶È£¬ÔÚÕâÖÖÇé¿öÏ£¬¿ÉÒÔ±£Ö¤´æÔÚÖ¸¶¨±ê¶ÈºÍÕýÈ·ÖµµÄ BigDecimal¡£Èç¹ûµ÷Ó÷½ÖªµÀ BigDecimalÔÚÆäСÊý²¿·ÖµÄ½áβÓÐ×ã¹»¶àµÄÁ㣨¼´ÆäÕûÊýÖµÖеÄÊ®µÄÒò×Ó£©£¬Ôò¸Ãµ÷ÓÃÒ²¿ÉÓÃÓÚ¼õÉÙ±ê¶È£¬ÒÔÔÊÐíÖØÐ±ê¶È£¬¶ø²»¸ü¸ÄÆäÖµ¡£
´Ë·½·¨·µ»ØÓë setScale µÄÁ½¸ö²ÎÊý°æ±¾ÏàͬµÄ½á¹û£¬µ«ÊÇ£¬Îªµ÷Ó÷½Ê¡È¥ÁËÖ¸¶¨ÉáÈëģʽµÄÂé·³£¨ÉáÈëģʽ²»Ó°Ïì½á¹û£©¡£
×¢Ò⣬ÓÉÓÚ BigDecimal ¶ÔÏóÊDz»¿É±äµÄ£¬Òò´Ë´Ë·½·¨µÄµ÷Óò»»á µ¼Ö³õʼ¶ÔÏó±»Ð޸ģ¬ÕâÓëʹÓÃÃûΪ setX ±äÒì×Ö¶Î X ·½·¨µÄ³£¹æÔ¼¶¨Ïà·´¡£Ïà·´£¬setScale ·µ»Ø¾ßÓÐÊʵ±±ê¶ÈµÄ¶ÔÏó£»·µ»ØµÄ¶ÔÏó²»Ò»¶¨ÊÇзÖÅäµÄ¡£
newScale - Òª·µ»ØµÄ BigDecimal ÖµµÄ±ê¶È¡£
ArithmeticException - Èç¹ûÖ¸¶¨µÄ±ê¶È²Ù×÷ÒªÇó½øÐÐÉáÈë¡£setScale(int, int),
setScale(int, RoundingMode)public BigDecimal movePointLeft(int n)
n - ½«Ð¡ÊýµãÏò×óÒÆ¶¯µÄλÊý¡£
ArithmeticException - Èç¹û±ê¶ÈÒç³ö¡£public BigDecimal movePointRight(int n)
n - ½«Ð¡ÊýµãÏòÓÒÒÆ¶¯µÄλÊý¡£
ArithmeticException - Èç¹û±ê¶ÈÒç³ö¡£public BigDecimal scaleByPowerOfTen(int n)
ArithmeticException - Èç¹û¸Ã±ê¶ÈµÄ·¶Î§³¬³ö 32 λÕûÊýµÄ·¶Î§¡£public BigDecimal stripTrailingZeros()
public int compareTo(BigDecimal val)
Comparable<BigDecimal> ÖÐµÄ compareToval - ½«´Ë BigDecimal ÓëÖ®±È½ÏµÄ BigDecimal¡£
public boolean equals(Object x)
compareTo ²»Í¬£¬½öµ±Á½¸ö BigDecimal ¶ÔÏóµÄÖµºÍ±ê¶È¶¼ÏàµÈʱ£¬´Ë·½·¨²ÅÈÏΪËüÃÇÏàµÈ£¨Òò´Ëͨ¹ý´Ë·½·¨½øÐбȽÏʱ£¬2.0 ²»µÈÓÚ 2.00£©¡£
x - ½«Óë´Ë BigDecimal ½øÐÐ±È½ÏµÄ Object¡£
compareTo(java.math.BigDecimal),
hashCode()public BigDecimal min(BigDecimal val)
val - Òª¼ÆËã×îСֵµÄÖµ¡£