float
and double
store their data using an IEEE standard that stores a sign bit, an exponent, and a fractional value. Most decimal values will not be exactly precise when stored due to the base 10 to base 2 conversion of the fractional portion.
Also, mathematically, 1234.566999999999999.... = 1234.567