[squeak-dev] The Trunk: Kernel-dtl.548.mcz
commits at source.squeak.org
commits at source.squeak.org
Mon Feb 28 02:51:43 UTC 2011
David T. Lewis uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-dtl.548.mcz
==================== Summary ====================
Name: Kernel-dtl.548
Author: dtl
Time: 27 February 2011, 9:51:00.787 pm
UUID: 3640676f-cde9-42ac-924b-f585949efb60
Ancestors: Kernel-cmm.547
Fix bug in Float>>printPaddedWith:To: by treating the format specifier as a string value, not as a float subject to numeric precision issues.
=============== Diff against Kernel-cmm.547 ===============
Item was changed:
----- Method: Float>>printPaddedWith:to: (in category 'printing') -----
printPaddedWith: aCharacter to: aNumber
"Answer the string containing the ASCII representation of the receiver
padded on the left with aCharacter to be at least on aNumber
integerPart characters and padded the right with aCharacter to be at
least anInteger fractionPart characters."
| aStream digits fPadding fLen iPadding iLen curLen periodIndex |
#Numeric.
"2000/03/04 Harmon R. Added Date and Time support"
aStream := WriteStream on: (String new: 10).
self printOn: aStream.
digits := aStream contents.
periodIndex := digits indexOf: $..
curLen := periodIndex - 1.
iLen := aNumber integerPart.
curLen < iLen
ifTrue: [iPadding := (String new: (iLen - curLen) asInteger) atAllPut: aCharacter;
yourself]
ifFalse: [iPadding := ''].
curLen := digits size - periodIndex.
+ "n.b. Treat aNumber as a string format specifier rather than as a number, because
+ floating point truncation can produce incorrect results for the fraction part."
+ fLen := (aNumber asString copyAfterLast: $. )
+ ifNotEmpty: [:s | s asInteger]
+ ifEmpty: [ 0 ].
- fLen := aNumber fractionPart.
- [fLen fractionPart > 1e-6] whileTrue:
- [fLen := fLen * 10.0].
- fLen := fLen asInteger.
curLen < fLen
ifTrue: [fPadding := (String new: fLen - curLen) atAllPut: aCharacter;
yourself]
ifFalse: [fPadding := ''].
^ iPadding , digits , fPadding!
More information about the Squeak-dev
mailing list
|