Well, numbers in computers are limited (mostly). What you see here is the classic overflow of a floaty/doubly stored number, which can hold a number of digits, and the exponent of it, for instance (the actual implementation differs, of course):
123 is stored as [1 2 3], exponent 2.
1.23 is stored as [1 2 3], exponent 0.
So, 90000000229031368 is stored as:
[9 0 0 0 0 0 0 0 2 2 9 0 3 1 3 6], exponent 16. And as you can see, there is no more room for the last 8 digit, so it is set when you read it.
The other examples might seem contradictory, but keep in mind that the computer does not store those digits in base 10, but base 2.
Read more on this subject with the keywords: Float floating-point (e.g. on Wikipedia).