Number.st
changeset 6335 8286bc57d05e
parent 6258 435600a44e73
child 6345 cfe5db4fe391
equal deleted inserted replaced
6334:cbb0e8c8c1a5 6335:8286bc57d05e
   325 	^ pos
   325 	^ pos
   326 
   326 
   327 "#(-500 -300 -150 -5 0 5 150 300 500 1200) collect: [:n | n asSmallAngleDegrees]"
   327 "#(-500 -300 -150 -5 0 5 150 300 500 1200) collect: [:n | n asSmallAngleDegrees]"
   328 !
   328 !
   329 
   329 
       
   330 closeFrom:aNumber
       
   331     "are these two numbers close?"
       
   332 
       
   333     | fuzz |
       
   334 
       
   335     self isNaN == aNumber isNaN ifFalse: [^ false]. 
       
   336     self isInfinite == aNumber isInfinite ifFalse: [^ false].
       
   337 
       
   338     fuzz := (self abs max:aNumber abs) * 0.0001. 
       
   339     ^ (self - aNumber) abs <= fuzz
       
   340 
       
   341     "
       
   342      9.0 closeTo: 8.9999     
       
   343      9.9 closeTo: 9          
       
   344      (9/3) closeTo: 2.9999      
       
   345      1 closeTo: 0.9999      
       
   346      1 closeTo: 1.0001      
       
   347      1 closeTo: 1.001       
       
   348      1 closeTo: 0.999       
       
   349 
       
   350      0.9999 closeTo: 1      
       
   351      1.0001 closeTo: 1      
       
   352      1.001 closeTo: 1     
       
   353      0.999 closeTo: 1     
       
   354     "
       
   355 !
       
   356 
   330 closeTo:num
   357 closeTo:num
   331     "are these two numbers close?"
   358     "are these two numbers close?"
   332 
   359 
   333     | ans |
   360     ^ num closeFrom:self
   334 
       
   335     self = num ifTrue:[^ true].
       
   336 
       
   337     num isLimitedPrecisionReal "isReal" ifTrue: [^ num closeTo: self asFloat].
       
   338     [ans := (self = num)] ifError: [:aString :aReceiver | ^ false].
       
   339     ^ ans
       
   340 
   361 
   341     "
   362     "
   342      1 closeTo:1.0000000001
   363      1 closeTo:1.0000000001
   343      1 closeTo:1.001
   364      1 closeTo:1.001
   344     "
   365     "
   720 ! !
   741 ! !
   721 
   742 
   722 !Number class methodsFor:'documentation'!
   743 !Number class methodsFor:'documentation'!
   723 
   744 
   724 version
   745 version
   725     ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.70 2001-12-05 09:23:46 cg Exp $'
   746     ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.71 2001-12-18 13:46:21 cg Exp $'
   726 ! !
   747 ! !