help-smalltalk
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-smalltalk] roundTo:


From: Paolo Bonzini
Subject: Re: [Help-smalltalk] roundTo:
Date: Sun, 03 Dec 2006 10:33:11 +0100
User-agent: Thunderbird 1.5.0.8 (Macintosh/20061025)

J Pfersich wrote:
st> -8 roundTo: 3 !
-6       ===============> incorrect, should be -9
st> 8 roundTo: 3 !
9        ===============>  correct

Right.  And there's another bug a couple lines above:

st> ((30 factorial + (1/4)) rounded - 30 factorial) printNl!
9581293239009280

Both fixed with the attached patch.  Thank you.

Paolo
--- orig/kernel/Number.st
+++ mod/kernel/Number.st
@@ -400,14 +400,14 @@ truncateTo: aNumber
 rounded
     "Returns the integer nearest the receiver"
     ^self negative
-       ifTrue: [ (self - 0.5) ceiling ]
-       ifFalse: [ (self + 0.5) floor ]
+       ifTrue: [ (self - (self unity / 2)) ceiling ]
+       ifFalse: [ (self + (self unity / 2)) floor ]
 !
 
 roundTo: aNumber
     "Answer the receiver, truncated to the nearest multiple
      of aNumber"
-    ^(self + (aNumber / 2) / aNumber) integerPart * aNumber
+    ^(self / aNumber) rounded * aNumber
 ! !
 
 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]