Hi john you can propose for inclusion in pharo. - Add a nice comment (with executablecomments would be a plus). - Possibly some tests - Send a PR.
> On 1 Sep 2020, at 09:32, John Aspinall <john.aspin...@gmail.com> wrote: > > Dolphin shows the same behaviour. I added the following method to > ScaledDecimal to help: > > roundedByScale > > | scaleFactor | > > scaleFactor := 10 ** scale. > > ^(ScaledDecimal newFromNumber: (fraction * scaleFactor) rounded scale: > scale) / scaleFactor > > > Translating slightly for Pharo: > > roundedByScale > > | scaleFactor | > > scaleFactor := 10 ** scale. > > ^(ScaledDecimal newFromNumber: (self * scaleFactor) rounded scale: > scale) / scaleFactor > > > You can then do: > > (82 - (2 * 35.9) - (0 / 2) * (113/121) asScaledDecimal: 1) roundedByScale = > 9.5s1 "true" > > > HTH. > > John > > > > > > > >> On 1 Sep 2020, at 05:17, Esteban Maringolo <emaring...@gmail.com> wrote: >> >> As a follow up to this, adding a roundTo: before converting into a >> ScaledDecimal does not work. >> >> (((91 - (2 * 35.9) - (0 / 2) * (113/121)) roundTo: 0.1) >> asScaledDecimal: 1) = 17.9s1 >> >> So how do you compare two ScaledDecimals that _should_ be the same? >> >> Regards! >> >> Esteban A. Maringolo >> >> On Tue, Sep 1, 2020 at 1:07 AM Esteban Maringolo <emaring...@gmail.com> >> wrote: >>> >>> Hi, >>> >>> I was doing some basic calculations based on a formula, and I wanted >>> to convert the result to a scaled decimal in order to avoid having >>> these "loose" decimals in 10th position or something similar. >>> >>> So I did the following: >>> 82 - (2 * 35.9) - (0 / 2) * (113/121) asScaledDecimal: 1 -> 9.5s1 >>> >>> But When I do this in a test: >>> (82 - (2 * 35.9) - (0 / 2) * (113/121) asScaledDecimal: 1) = 9.5s1 >>> >>> It fails because the comparison returns false. >>> >>> I guess this is the proper behavior, but I'd expected that the >>> conversion from a Float to a scaled decimal would have eliminated the >>> extra precision from the formula. >>> >>> I can do a roundTo: 0.1 before converting, but I'd like to know what >>> would be the proper way of dealing with this. >>> >>> Thanks! >>> >>> Esteban A. Maringolo >> > > -------------------------------------------- Stéphane Ducasse http://stephane.ducasse.free.fr / http://www.pharo.org 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France