http://www.perlmonks.org?node_id=1211070

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I am trying to step through a set of values by an increment less than 1. Simplified version of my code looks like this:
my $i = 0.1; my $v = 0 - $i; while ( $v < 9 ) { $v += $i; print $v, $/; }
I was expecting the value to step up 0, 0.1, 0.2, ... 0.9, 1, 1.1, ... 8.9, 9. And it does, right up to 5.9. But then 5.9 is followed by 5.99999999999999, and the long series of 9s continues for the remainder of the sequence (that is, next is 6.09999999999999, 6.19999999999999, 6.29999999999999, and so on)

This is not expected. Can anybody explain why it's doing this and how I could make it not?

I'm running Perl 5.18.2 on a Mac (Sierra OS). And no, upgrading to a different Perl build is not an acceptable solution unless this is a well known bug in that particular release. Even then, I probably have to code around the bug.