# New Ticket Created by Zefram # Please include the string: [perl #128914] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=128914 >
> "9.998999999999999e0".EVAL - "9.998999999999999e0".Num 1.77635683940025e-15 Observe that the same string yields different Num values when interpreted as a Num literal and when coerced. Where the string is meaningful both ways, this is a bug. Obviously there are some situations where the syntax of Perl 6 literals doesn't exactly match what one would expect of a Str.Num conversion, but that's not the case here. Where the syntax matches, as it does in this case, or more generally where the same digits are presented with the same weights, one would expect the core decimal->float conversion to behave the same for both. The conversions yielding different values implies that at least one of them is individually incorrect. In this case, the coercion yields the correctly-rounded value, and the literal is getting it wrong. [perl #128912] is concerned with these conversions being incorrect per se, and my test case there used the conversion for literals. The difference between the two forms of decimal->float conversion is not merely a matter of literals getting it wrong and coercion getting it right: there are also cases where the coercion gets it wrong. In fact, coercion gets it wrong in the [perl #128912] test case: both literal interpretation and coercion get "9.999e-5" wrong in the same way. I have not yet encountered a case where literal interpretation gets it right and coercion gets it wrong, but nor can I say that there isn't such a case. -zefram
