From: "U.Nakamura" Date: 2006-10-30T18:43:40+09:00 Subject: [ruby-dev:29712] Re: Bignum#to_s(10) broken こんにちは、なかむら(う)です。 In message "[ruby-dev:29710] Bignum#to_s(10) broken" on Oct.30,2006 17:44:19, wrote: | - j = j * 241L / 800; ところで、この 241/800 はlog10(2)の近似値だと思うのですが、こ の値であるのには何か深い理由があるのでしょうか? この式だけ見て考えると、要求される近似値としては、 * log10(2) よりは大きくて、 * オーバーフローを遅らせるため分子が小さいほうがよい のように思えます。 この観点から考えると、例えば 146/485 の方が近似値としては優れ ている上に分子が小さいですし、87/289 や 28/93 なども、近似度 は 146/485 にわずかに及ばないながらも 241/800 よりはマシです し、分子もぐっと小さくなります。 それでは。 -- U.Nakamura