Probably wasn''t causing any problems, but is wrong.
==================================================================---
lib/sup/util.rb (revision 737)
+++ lib/sup/util.rb (working copy)
@@ -299,7 +299,7 @@
class Fixnum
def num_digits base=10
return 1 if self == 0
- 1 + (Math.log(self) / Math.log(10)).floor
+ 1 + (Math.log(self) / Math.log(base)).floor
end
def to_character
--
Ian Taylor
Shot (Piotr Szotkowski)
2007-Dec-03 10:52 UTC
[sup-talk] Util - Fixnum num_digits is wrong
Ian Taylor:> class Fixnum > def num_digits base=10 > return 1 if self == 0 > - 1 + (Math.log(self) / Math.log(10)).floor > + 1 + (Math.log(self) / Math.log(base)).floor > endMath.log and Float#/ returning Floats means the above approach is prone to the IEEE 754 representation inaccuracy. Wouldn?t the below make more sense? class Fixnum def num_digits base = 10 to_s(base).size end end -- Shot --> Who wants to recommend a Usenet reader for little ol'' me?I recommend Garrett Morris, particularly if you''re hard-of-hearing. -- jennifer friedoff and Joseph Nebus, rec.arts.tv.mst3k.misc -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 191 bytes Desc: not available Url : http://rubyforge.org/pipermail/sup-talk/attachments/20071203/37b62dab/attachment.bin
Excerpts from Shot (Piotr Szotkowski)''s message of Mon Dec 03 02:52:10 -0800 2007:> Math.log and Float#/ returning Floats means the above approach is > prone to the IEEE 754 representation inaccuracy. > > Wouldn?t the below make more sense? > > class Fixnum > def num_digits base = 10 > to_s(base).size > end > endYes, but not as much as simply deleting the method. :) -- William <wmorgan-sup at masanjin.net>