Cami, Silly me 1.1.1. I should obviously be up to date. Thanks
Guy On 10/08/2012, at 10:04 AM, Camillo Bruni wrote: > which version of Pharo/VM are you using? > Cause in my latest 1.4 and latest 2.0 this seems to work... > > String streamContents: [ :s| -0.55s2 printOn: s ] "yields the expected > '-0.55s2'" > > I remember Mariano once had a strange integer issue since he accidentally > used once of > is own compiled VMs which wasn't working as expected. > > > best > cami > > On 2012-08-09, at 23:53, Guy <[email protected]> wrote: > >> Team Pharo, >> The printOn: method in ScaledDecimal returns a positive number string where >> the number is >-1 and < 0. For example -0.55s2 returns a string '0.55s2'. >> >> I have made my own correction. >> >> This may help the one other person who is using ScaledDecimal as a proxy for >> Currency but I have no idea what to do with this astounding discovery nor >> whether it will help anyone nor indeed if it is very tidy code. >> >> Thanks >> >> Guy Bloomfield >> >> The current method starts with the string for the integer part 0 and then >> the absolute value of the fraction: >> >> printOn: aStream >> "Append an approximated representation of the receiver on aStream. >> Use prescribed number of digits after decimal point (the scale) using a >> rounding operation if not exact" >> >> | fractionPart | >> scale = 0 >> ifTrue: [self rounded printOn: aStream] >> ifFalse: [self integerPart printOn: aStream. >> aStream nextPut: $.. >> fractionPart := (self abs fractionPart * (10 >> raisedToInteger: scale)) rounded. >> ..... >> >> My correction: >> >> printOn: aStream >> "Append an approximated representation of the receiver on aStream. >> Use prescribed number of digits after decimal point (the scale) using a >> rounding operation if not exact" >> >> | fractionPart | >> >> self < 0 ifTrue: [ aStream nextPut: $- ]. >> >> scale = 0 >> ifTrue: [self rounded printOn: aStream] >> ifFalse: [self abs integerPart printOn: aStream. >> aStream nextPut: $.. >> fractionPart := (self abs fractionPart * (10 >> raisedToInteger: scale)) rounded. >> ..... >> >> >
