Number.st
branchjv
changeset 18105 3a3a3e0ac47f
parent 18080 9ae1db7ef04a
parent 15776 e7f5200ad493
child 18120 e3a375d5f6a8
equal deleted inserted replaced
18104:619b61aee9e4 18105:3a3a3e0ac47f
   376     "ST-80 compatibility (thanks to a note from alpha testers)
   376     "ST-80 compatibility (thanks to a note from alpha testers)
   377      read and return the next Number in smalltalk syntax from the 
   377      read and return the next Number in smalltalk syntax from the 
   378      (character-) aStream.
   378      (character-) aStream.
   379      Returns nil if aStream contains no valid number."
   379      Returns nil if aStream contains no valid number."
   380 
   380 
   381     ^ [
   381     ^ self readSmalltalkSyntaxFrom:aStream onError:nil.
   382         Scanner scanNumberFrom:aStream.
       
   383     ] on:Error do:[:ex|
       
   384         nil
       
   385     ].
       
   386 
   382 
   387     "
   383     "
   388      Number readSmalltalkSyntaxFrom:'99d'    
   384      Number readSmalltalkSyntaxFrom:'99d'    
   389      Number readSmalltalkSyntaxFrom:'99.00d'    
   385      Number readSmalltalkSyntaxFrom:'99.00d'    
   390      Number readSmalltalkSyntaxFrom:'54.32e-01'    
   386      Number readSmalltalkSyntaxFrom:'54.32e-01'    
   391      Number readSmalltalkSyntaxFrom:'12345678901234567890'
   387      Number readSmalltalkSyntaxFrom:'12345678901234567890'
   392      Number readSmalltalkSyntaxFrom:'16rAAAAFFFFAAAAFFFF'
   388      Number readSmalltalkSyntaxFrom:'16rAAAAFFFFAAAAFFFF'   
       
   389      Number readSmalltalkSyntaxFrom:'foobar'     
   393      Number readSmalltalkSyntaxFrom:'(1/10)' 
   390      Number readSmalltalkSyntaxFrom:'(1/10)' 
   394 
   391 
   395      Number readSmalltalkSyntaxFrom:'(1/0)' 
   392      Number readSmalltalkSyntaxFrom:'(1/0)' 
   396 
   393 
   397      Number readFrom:'(1/3)' 
   394      Number readFrom:'(1/3)' 
   413      Number readSmalltalkSyntaxFrom:s.
   410      Number readSmalltalkSyntaxFrom:s.
   414      s next    
   411      s next    
   415     "
   412     "
   416 
   413 
   417     "Modified: / 19.11.1999 / 18:26:47 / cg"
   414     "Modified: / 19.11.1999 / 18:26:47 / cg"
       
   415 !
       
   416 
       
   417 readSmalltalkSyntaxFrom:aStream onError:errorValue
       
   418     "ST-80 compatibility (thanks to a note from alpha testers)
       
   419      read and return the next Number in smalltalk syntax from the 
       
   420      (character-) aStream.
       
   421      Returns nil if aStream contains no valid number."
       
   422 
       
   423     |n|
       
   424 
       
   425     [
       
   426         n := Scanner scanNumberFrom:aStream.
       
   427     ] on:Error do:[:ex|
       
   428         n := nil
       
   429     ].
       
   430     n isNil ifTrue:[^ errorValue value].
       
   431     ^ n
       
   432 
       
   433     "
       
   434      Number readSmalltalkSyntaxFrom:'foo' onError:123   
       
   435     "
   418 ! !
   436 ! !
   419 
       
   420 
   437 
   421 !Number class methodsFor:'constants'!
   438 !Number class methodsFor:'constants'!
   422 
   439 
   423 decimalPointCharacter 
   440 decimalPointCharacter 
   424     "printed"
   441     "printed"
   647         errorString:'foo bar test'
   664         errorString:'foo bar test'
   648     "
   665     "
   649 
   666 
   650     "Modified: / 16.11.2001 / 14:13:16 / cg"
   667     "Modified: / 16.11.2001 / 14:13:16 / cg"
   651 ! !
   668 ! !
   652 
       
   653 
   669 
   654 !Number class methodsFor:'private'!
   670 !Number class methodsFor:'private'!
   655 
   671 
   656 readMantissaAndScaleFrom:aStream radix:radix
   672 readMantissaAndScaleFrom:aStream radix:radix
   657     "helper for readFrom: -
   673     "helper for readFrom: -
   724      Abstract subclasses must redefine again."
   740      Abstract subclasses must redefine again."
   725 
   741 
   726     ^ self == Number
   742     ^ self == Number
   727 ! !
   743 ! !
   728 
   744 
   729 
       
   730 !Number methodsFor:'*StateSpecs-Specs'!
   745 !Number methodsFor:'*StateSpecs-Specs'!
   731 
   746 
   732 isEqual: aNumber within: accuracy 
   747 isEqual: aNumber within: accuracy 
   733 	^(self - aNumber) abs < accuracy
   748 	^(self - aNumber) abs < accuracy
   734 ! !
   749 ! !
   887 !
   902 !
   888 
   903 
   889 stringForReadout
   904 stringForReadout
   890     ^ self rounded printString
   905     ^ self rounded printString
   891 ! !
   906 ! !
   892 
       
   893 
   907 
   894 !Number methodsFor:'coercing & converting'!
   908 !Number methodsFor:'coercing & converting'!
   895 
   909 
   896 i
   910 i
   897     "return a complex number, with the receiver as imaginary part, 0 as real part"
   911     "return a complex number, with the receiver as imaginary part, 0 as real part"
  2363 
  2377 
  2364     "Created: / 28.10.1998 / 17:14:56 / cg"
  2378     "Created: / 28.10.1998 / 17:14:56 / cg"
  2365     "Modified: / 5.11.2001 / 17:54:22 / cg"
  2379     "Modified: / 5.11.2001 / 17:54:22 / cg"
  2366 ! !
  2380 ! !
  2367 
  2381 
  2368 
       
  2369 !Number class methodsFor:'documentation'!
  2382 !Number class methodsFor:'documentation'!
  2370 
  2383 
  2371 version
  2384 version
  2372     ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.143 2013-08-01 12:44:55 cg Exp $'
  2385     ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.144 2013-10-08 13:29:00 cg Exp $'
  2373 !
  2386 !
  2374 
  2387 
  2375 version_CVS
  2388 version_CVS
  2376     ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.143 2013-08-01 12:44:55 cg Exp $'
  2389     ^ '$Header: /cvs/stx/stx/libbasic/Number.st,v 1.144 2013-10-08 13:29:00 cg Exp $'
  2377 ! !
  2390 ! !
  2378 
  2391