鍓嶈█BigDecimal鏄痡ava.math鍖呬腑鎻愪緵鐨勪竴绉嶇被鍨嬶紝鍙互鐢ㄦ潵杩涜绮剧‘璁$畻銆傚洜姝わ紝鍦ㄦ敮浠樸€佺數鍟嗙瓑涓氬姟涓紝BigDecimal鐨勪娇鐢ㄩ潪甯搁绻併€傚苟涓斿畠鍐呴儴鑷甫浜嗗緢澶氭柟娉曪紝姣斿鍔犲噺涔橀櫎绛夎绠楁柟娉曞彲浠ョ洿鎺ヨ皟鐢ㄣ€備唬鐮侀櫎浜嗛渶瑕佺敤BigDecimal琛ㄧず鏁板瓧锛岃繘琛屾暟瀛楄繍绠楀锛岃繕缁忓父闇€瑕佸鏁板瓧杩涜鐩哥瓑鍒ゆ柇銆傞偅涔堜负浠€涔堜細鏈夎繖鏍风殑瑕佹眰鍛煠攡鏈変粈涔堢巹鏈吼煠攡璇峰惉鎴戠殑鏁呬簨...BigDecimal鍋氱瓑浠锋瘮杈僷ublicstaticvoidmain(String[]args){BigDecimalbigDecimal1=newBigDecimal(1);BigDecimalbigDecimal2=newBigDecimal(1);if(bigDecimal1==bigDecimal2){//绛変环姣旇緝}}鐩镐俊鑱槑鐨勬湅鍙嬩竴鐪煎氨鑳界湅鍑轰笂闈㈢殑浠g爜鏄湁闂鐨勶紝鍥犱负BigDecimal鏄竴涓璞★紝涓嶈兘鐢?=鏉ヨ繘琛岀瓑浠峰垽鏂€傜敤BigDecimal鐨別quals鏂规硶鍋氱浉绛夋瘮杈冨彲浠ュ悧锛燄煈噋ublicstaticvoidmain(String[]args){BigDecimalbigDecimal1=newBigDecimal(1);BigDecimalbigDecimal2=newBigDecimal(1);if(bigDecimal1.equals(bigDecimal2)){//绛夊€兼瘮杈儅}杩欓噷鎴戝厛寮€涓帺绗戯紝璺戜竴涓嬩唬鐮佺湅鐪嬭兘涓嶈兘鐢˙igDecimal鐨別quals鏂规硶鍋氱瓑浠锋瘮杈?鈼?鈼?鈼?,publicstaticvoidmain(String[]args){BigDecimalbigDecimal1=newBigDecimal(1);BigDecimalbigDecimal2=newBigDecimal(1);System.out.println(bigDecimal1.equals(bigDecimal2));BigDecimalbigDecimal3=newBigDecimal(1);BigDecimalbigDecimal4=newBigDecimal(1.0);System.out.println(bigDecimal3.equals(bigDecimal4));BigDecimalbigDecimal5=newBigDecimal("1");BigDecimalbigDecimal6=newBigDecimal("1.0");System.out.println(bigDecimal5.equals(bigDecimal6));equals鏂规硶姣旇緝1鍜?.0鏃讹細浣跨敤int,double瀹氫箟BigDecimal鐨勭粨鏋滀负鐪燂紱浣跨敤String瀹氫箟BigDecimal鐨勭粨鏋滄槸false銆備负浠€涔堜細杩欐牱锛熸垜浠潵鐪嬬湅equals鏂规硶鐨勬簮鐮侌煈?***姣旇緝杩欎釜{@codeBigDecimal}鍜屾寚瀹氱殑*{@codeObject}鏄惁鐩哥瓑銆備笌{@link*#compareTo(BigDecimal)compareTo}涓嶅悓锛屾鏂规硶浠呭綋涓や釜*{@codeBigDecimal}瀵硅薄鍦?鍊煎拰姣斾緥涓婄浉绛夋椂鎵嶈涓哄畠浠浉绛夛紙鍥犳2.0涓嶇瓑浜?.00涓?姝ゆ柟娉曟瘮杈冩椂锛?@paramx{@codeichObject}tohcodeBigDecimal}鏄?瑕佽繘琛屾瘮杈冦€?@return{@codetrue}褰撲笖浠呭綋鎸囧畾鐨剓@code瀵硅薄}鏄竴涓?{@codeBigDecimal}鍏跺€煎拰姣斾緥绛変簬姝?{@codeBigDecimal}銆?@see#compareTo(java.math.BigDecimal)*@see#hashCode*/@Overridepublicbooleanequals(Objectx){if(!(xBigDecimal鐨勫疄渚?)杩斿洖false锛汢igDecimalxDec=(BigDecimal)x;濡傛灉锛坸==杩欎釜锛夎繑鍥炵湡锛涘鏋滐紙瑙勬ā锛?xdec.scale锛夎繑鍥炲亣锛沴ongs=this.intCompact;闀縳s=xdec.intCompact;if(s!=Inflated){if(xs==Inflate)xs=compact)intVal);杩斿洖xs==s锛泒elseif(xs!=INFLATED)returnxs==compactValFor(this.intVal);瀹為檯涓婁粠鏂规硶涓繑鍥瀟his.inflated().equals(xDec.inflated()})锛涚瓟妗堝彲浠ュ湪璇勮涓壘鍒帮細equals鏂规硶浼氭瘮杈冧袱閮ㄥ垎锛屽嵆鍊硷紙value锛夊拰姣斾緥锛坰cale锛夛紝涔熷氨鏄bigDecimal5鍜宐igDecimal6鐨勫€艰櫧鐒朵竴鏍凤紝浣嗘槸姣斾緥涓嶄竴鏍锋墦涓柇鐐硅皟璇曞惂~鎴戜滑鍙互鐪嬪埌bigDecimal5鐨剆cale鍊间负0锛宐igDecimal6鐨剆cale鍊间负1锛屾墍浠igDecimal5鍜宐igDecimal6鐨勬瘮杈冪粨鏋滀负false(鈼徦団垁藝鈼?閭d箞姝ゆ椂鍙︿竴涓棶棰樺嚭鐜颁簡锛氫负浠€涔堝昂搴︿笉鍚岋紵馃鍢诲樆~鏈嬪弸浠敞鎰忓畨鍏紝鍚垜璇磣BigDecimal鏈変互涓嬪洓绉嶆瀯閫犳柟娉曪細BigDecimal(int)BigDecimal(double)BigDecimal(long)BigDecimal(String)鍏朵腑鏈€瀹规槗鐞嗚В鐨勬槸BigDecimal(int))鍜孊igDecimal(long)锛屽洜涓哄畠浠槸鏁存暟锛屾墍浠ュ皬鏁颁綅鏁颁负0锛堟簮浠g爜濡備笅馃憞锛夛細/***灏嗕竴涓獅@codeint}缈昏瘧鎴愪竴涓獅@codeBigDecimal}銆倇@codeBigDecimal}鐨?鏍囧害涓洪浂銆?*@paramval{@codeint}鍊艰杞崲涓?{@codeBigDecimal}銆?@since1.5*/publicBigDecimal(intval){this.intCompact=val;杩欎釜.scale=0;this.intVal=null;}``````/***灏唟@codelong}杞崲涓簕@codeBigDecimal}銆倇@codeBigDecimal}鐨?鏍囧害涓洪浂銆?*@paramval{@codelong}瑕佽浆鎹负{@codeBigDecimal}鐨勫€笺€?@since1.5*/publicBigDecimal(longval){this.intCompact=val;this.intVal=(val==鑶ㄨ儉)?INFLATED_BIGINT锛氱┖锛涜繖涓?scale=0;瀵硅薄鐨勫€间笉绛変簬0.1锛岃€屾槸绛変簬0.1000000000000000055511151231257827021181583404541015625涓嬮潰鎵撲釜鏂偣锛岃皟璇曚竴涓媠cale鍊兼槸澶氬皯銆傛垜浠彲浠ョ湅鍒皊cale鍊间负55锛岃繖涓€兼槸鎬庝箞鏉ョ殑鍛紵鍏跺疄寰堢畝鍗曘€傚埢搴﹀€兼槸杩欎釜鏁板瓧鐨勪綅鏁般€傚叾浠栨诞鐐规暟涔熸槸濡傛銆傚浜巒ewBigDecimal(1.0)鍜宯ewBigDecimal(1.00)杩欐牱鐨勫舰寮忥紝鍥犱负浠栨湰璐ㄤ笂涔熸槸涓€涓暣鏁帮紝鎵€浠ヤ粬鍒涘缓鐨勬暟瀛楃殑灏忔暟浣嶆暟鏄?銆傛渶鍚庢垜浠潵鐪婤igDecimal(String)銆傚綋鎴戜滑浣跨敤newBigDecimal("0.1")鍒涘缓涓€涓狟igDecimal鏃讹紝鍒涘缓鐨勫€兼伆濂界瓑浜?.1銆傞偅涔堜粬鐨勫昂搴︽槸1锛涘鏋滅敤newBigDecimal("0.10000")锛岄偅涔堝垱寤虹殑鏁版槸0.10000锛屽皬鏁颁綅鏁版槸5銆傝鍒拌繖閲岋紝鐩镐俊澶у灏辨槑鐧戒负浠€涔堢敤equals鏂规硶瀵筨igDecimal5鍜宐igDecimal6杩涜equals姣旇緝鐨勭粨鏋滄槸false浜?鍒ゆ柇锛熷湪BigDecimal涓紝杩樹负鎴戜滑鎻愪緵浜嗕竴涓柟娉曗€斺€攃ompareTo鏂规硶锛岃繖涓柟娉曞彧鑳芥瘮杈冧袱涓暟鐨勫€硷紝濡傛灉涓や釜鏁扮浉绛夊垯杩斿洖0銆傛垜浠妸equals鎹㈡垚compareTo鍚庯紝鍙互鍙戠幇bigDecimal5鍜宐igDecimal6姣旇緝鐨勭粨鏋滄槸0锛屼篃灏辨槸璇翠袱涓€肩浉绛夈€傞檮瑷€鎵€浠ユ垜浠湪鍋氱瓑浠锋瘮杈冩椂锛屼笉瑕佸彧鐢˙igDecimal鐨別quals鏂规硶銆傚鏋滃彧鏄兂姣旇緝鍊硷紝鍙互鏋滄柇閫夋嫨compareTo鏂规硶鎼炲畾~鎬荤粨涓汉缁忛獙鏈夐檺锛屾湁浜涘湴鏂瑰彲鑳戒笉鏄壒鍒埌浣嶃€傚鏋滀綘鍦ㄩ槄璇荤殑杩囩▼涓兂鍒颁簡浠€涔堥棶棰橈紝娆㈣繋鍦ㄨ瘎璁哄尯鐣欒█锛屾垜浠◢鍚庝細涓€涓€璁ㄨ馃檱鈥嶅鏋滄湰鏂囧浣犳湁甯姪锛岃涓嶈鍚濆暚浣犵殑鐐硅禐锛岃阿璋紒
