Если предположить, что float
- это число с плавающей запятой IEEE754 с одинарной точностью, 299792450 не может быть точно представлено .
Это значение требует как минимум 28 бит точности, но float
имеет не более 24 бит точности. Таким образом, значение округляется до максимально возможного значения, которое может быть представлено.
Если вы использовали double
, который имеет точность 53 бита, вы увидите точное значение.
printf("%f\n", 299792450.0);