--Multipart_Tue_Sep_17_21:01:01_2002-1
Content-Type: text/plain; charset=ISO-2022-JP

ºäÌî ÀµÌÀ¤Ç¤¹¡£

At Tue, 17 Sep 2002 15:07:11 +0900,
<rubyist / mh1.117.ne.jp> wrote:
> 9.2¤Î¿ôÃͤòÂåÆþ¤·¡¢¤µ¤»¤ë¤È9.199999999999999¤Ë¤Ê¤ê¤Þ¤·¤¿¡£
> ¤³¤ì¤Ã¤Æ¡¢»ÅÊý¤¬Ìµ¤¤¤³¤È¤Ç¤·¤ç¤¦¤«¡©

At Tue, 17 Sep 2002 15:55:45 +0900
<f-hiro / eweb.co.jp> wrote:
> ¡¡ÍÑÅӤˤâ¤è¤ë¤È¤Ï»×¤¤¤Þ¤¹¤¬¡¢Â®ÅÙ¤ò̵»ë¤¹¤ì¤ÐRuby¤À¤ÈBignum¤¬»È¤¨¤ë¤Î¤Ç¡¢
> ÉâÆ°¾®¿ô¤ÎÂå¤ï¤ê¤Ë¥²¥¿¤ò¤Ï¤«¤»¤¿¿ôÃͤDZ黻¤¹¤ë¤È¤¤¤¦¤Î¤Ï¤É¤¦¤Ç¤·¤ç¤¦¤«¡©

9.2 ¤¯¤é¤¤¤ÎÀºÅ٤Ǥ¤¤¤¤Î¤Ê¤é¤Ð¡¢(¤«¤Ä®ÅÙ¤ò̵»ë¤Ç¤­¤ì¤Ð)
require "rational"
Rational(92,10)
¤È°·¤¨¤Ð¤¤¤¤¤«¤È»×¤¤¤Þ¤¹¡£

require "mathn"
¤â¹Ô¤Ê¤¦¤È¡¢92/10 ¤ÇºÑ¤à¤Î¤Ç¡¢´Êñ¤Ë±¤Æ¤¤¤¤¤«¤â¡¨Â


Æìïá¤òɬÍפÊÀºÅÙ¤Ç Rational ¤ËÊÑ´¹¤¹¤ë¤¿¤á¤Î¼«ºî¥é¥¤¥Ö¥é¥ê ---
¶ñÂÎŪ¤Ë¤Ï Float class ¤Ë .to_r(precP (prec¤ÏÀºÅÙ) ¥á¥É¤ò
¤Ä¤±²Ã¤¨¤ë --- ¤òźÉÕ¤·¤Æ¤ß¤Þ¤·¤¿¡£

ºäÌî ÀµÌÀ

--Multipart_Tue_Sep_17_21:01:01_2002-1
Content-Type: text/plain; charset=US-ASCII

# fl2rat.rb
class Float
  def to_r(precP
    ## Do "include Math" and "require 'rational'" first.

    case self
    when Integer, Rational, 0
      return self.to_r
    end

    if self < 0
      keta**(log10(-self).floor)
    else
      keta**(log10(self).floor)
    end

    keta2**(prec-1)
    (keta.to_r)*((self/keta)*keta2).round/keta2
  end
end

--Multipart_Tue_Sep_17_21:01:01_2002-1
Content-Type: text/plain; charset=US-ASCII

irb(main):001:0> require  'rational'
true
irb(main):002:0> include Math
Object
irb(main):003:0> require "fl2rat"
true
irb(main):004:0> 9.2.to_r
Rational(46, 5)
irb(main):005:0> 99.999.to_r
Rational(99999, 1000)
irb(main):006:0> 99.9999.to_r
Rational(100, 1)
irb(main):007:0> 99.9999.to_r(6)
Rational(999999, 10000)
irb(main):008:0> -99.9999.to_r(6)
Rational(-999999, 10000)
irb(main):009:0> 9.2e-10.to_r
Rational(23, 25000000000)
irb(main):011:0> 23.0/25000000000
9.2e-10
irb(main):012:0> 

--Multipart_Tue_Sep_17_21:01:01_2002-1--