It will reuse a floating-point literal for another value that's approximately equal
I'll speculate that it will only engage in "reuse" when the two values are exactly equal. (Bear in mind that 2e25 and 20e24 are exactly equal.)
So it should be a valid optimization - it's only being brought undone by the miscalculation of 20e24.
The miscalculation of 20e24 is a bug in perl6 that should be reported, though FAIK it might already have been fixed.
UPDATE: The same miscalculation is also a bug in perl5 - but such miscalculations are already known in perl 5