[squeak-dev] The Inbox: Kernel-mtf.924.mcz
Levente Uzonyi
leves at elte.hu
Sat May 2 20:32:31 UTC 2015
On Sat, 2 May 2015, Nicolas Cellier wrote:
>
>
> 2015-05-02 18:27 GMT+02:00 <commits at source.squeak.org>:
> A new version of Kernel was added to project The Inbox:
> http://source.squeak.org/inbox/Kernel-mtf.924.mcz
>
> ==================== Summary ====================
>
> Name: Kernel-mtf.924
> Author: mtf
> Time: 2 May 2015, 12:26:05.675 pm
> UUID: 7f688860-5202-4c0d-8ece-8723fe7317d6
> Ancestors: Kernel-nice.923
>
> Copied Number >> #round: from Pharo. One of 3 methods needed to make the Artefact pdf library work on squeak:
> https://sites.google.com/site/artefactpdf/
>
> =============== Diff against Kernel-nice.923 ===============
>
> Item was added:
> + ----- Method: Float>>round: (in category 'truncation and round off') -----
> + round: numberOfWishedDecimal
> + "only leave a fixed amount of decimal"
> + "10.12345 round: 2 => 10.12"
> +
> + | v |
> + v := 10 raisedTo: numberOfWishedDecimal.
> + ^ ((self * v) rounded / v) asFloat
> + !
>
>
> self assert: (Float fmax round: 2) = Float fmax.
>
> It's probably not very important for artefact, but if this method has a wider usage than artefact, then it should better be robust to overflow...
>
> Item was added:
> + ----- Method: Fraction>>round: (in category 'truncation and round off') -----
> + round: numberOfWishedDecimal
> + ^self asFloat round: numberOfWishedDecimal!
>
>
> Transforming exact arithmetic into inexact Float sounds like heresy to me ;)
> That's a questionable choice.
> Why this cult to Float would be necessary here?
>
> Item was added:
> + ----- Method: Integer>>round: (in category 'truncation and round off') -----
> + round: numberOfWishedDecimal
> + ^self!
>
> Item was added:
> + ----- Method: Number>>round: (in category 'truncation and round off') -----
> + round: numberOfWishedDecimal
> + self subclassResponsibility!
>
>
> If it's subclass responsibility, then it must be implemented in ScaledDecimal.
> This is not necessary in Pharo, because ScaledDecimal has been moved under Fraction, but it is in Squeak.
> I'd rather see Float implementation moved up (without the asFloat) and Float invoking super asFloat...
>
> I didn't check artefact, but I suspect that the usage is just to printShowingMaxDecimals: numberOfWishedDecimal, which would make the whole method
> moot.
The method was probably written by someone who's not aware of #roundTo:.
You're right about the printing thing in Artefact. I replaced #round: with
#printOn:maxDecimalPlaces: in my image.
Levente
>
> Nicolas
>
>
More information about the Squeak-dev
mailing list
|