Issue #7404 has been updated by mame (Yusuke Endoh). Status changed from Open to Assigned Assignee set to mrkn (Kenta Murata) Target version set to 2.0.0 ---------------------------------------- Bug #7404: BigDecimal#add(Float) ??®ã?? BigDecimal ???è¿???????ä»???®å?????æ¼?ç®???§ã?¯ä??å¤???«ã?ªã?? https://bugs.ruby-lang.org/issues/7404#change-33806 Author: sho-h (Sho Hashimoto) Status: Assigned Priority: Normal Assignee: mrkn (Kenta Murata) Category: Target version: 2.0.0 ruby -v: ruby 2.0.0dev (2012-11-19 trunk 37734) [x86_64-linux] =begin ????????¾ã?®å¯¾å¿?ä¸ã?«æ??ä»?????????®ã?§ã????????#7176 ??®å¯¾å¿???«ã????????BigDecimal#+ ??? Float ???渡ã???????´å?????BigDecimal ???è¿???£ã?¦ã??????¿ã???????ªã?®ã?§ã????????ä»???®å?????æ¼?ç®???¯ã?????以å????¨å??æ§???? Float ???è¿????????????§ã????? ä¾??????°ã??BigDecimal#-???#sub ???ä¾???«ã????¾ã????¨ã??以ä????®ã???????«å??ä½??????¾ã?????(#+ ??? #add ?????¨ã????¹ã?? BigDecimal ???è¿??????¾ã??) require "bigdecimal" a = BigDecimal.new("1.1") b = BigDecimal.new("2.2") c = 3.3 p a - b # => #<BigDecimal:f9232478,'-0.11E1',18(36)> p a - c # => -2.1999999999999997 p a.sub(b, 10) # => #<BigDecimal:f923239c,'-0.11E1',18(36)> p a.sub(c, 0) # => -2.1999999999999997 p a.sub(c, 10) # => ArgumentError BigDecimal#sub ??®å??è£???§ã????????BigDecimal_sub2 ??¢æ?°ã?®ä»¥ä¸???®é?¨å??????????£ã?¦ã???????¨æ???????®ã?§ã????????c ??? Float ???代å?¥ã?????????????????GetVpValue ??®æ????«ä??å¤???«ã?ªã????®ã?§ã?¯ã?ªã???????¨è???????¦ã????¾ã?????(ç¬? 2 å¼???°ã?? 0 ??????å®?????????´å????? mx == 0 ??®æ?¹ã?????????????????çµ??????? Float ??«ã?ªã??????????§ã??) if (mx == 0) return BigDecimal_sub(self, b); else { size_t pl = VpSetPrecLimit(0); VALUE c = BigDecimal_sub(self,b); /* ????????§ã?? Float ??ªã????¸ã?§ã?¯ã?????è¿???£ã?¦ã????? */ VpSetPrecLimit(pl); GUARD_OBJ(cv,GetVpValue(c,1)); /* ????????? GetVpValueWithPrec ??? prec å¼???°ã?? -1 ???渡ã????????ä¾?å¤? */ VpLeftRound(cv,VpGetRoundMode(),mx); return ToValue(cv); } BigDecimal#add ??¨å?????????????«ã??Rational ??? Float ???渡ã??????????´å????¯ã??è¨?ç®?çµ??????? BigDecimal ??«ã?ªã??????????«ã???????®ã??????????®ã?§ã?¯ã?ªã???????¨æ???????¾ã???????? =end -- http://bugs.ruby-lang.org/