Not always. I found a bug trying to deploy JSON::XS on AIX 7 where '5e1' was deciphered by JSON::XS, and came out to 50.0000000007 or something.
I don't think you found a bug. See http://en.wikipedia.org/wiki/Scientific_notation#E_notation for why 5e1 is just another number (that is read as 5.0E+1 or 5.0*101), and perlfaq4 or What Every Computer Scientist Should Know About Floating-Point Arithmetic for why you don't get just 50 as a result and why using == and != with floats just does not work.
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so". ;-)