Числа с плавающей точкой обычно представляются в виде двоичных дробей, умноженных на два, для эффективности.Это примерно так же, как и представление 10, за исключением того, что существуют десятичные дроби, которые нельзя точно представить в виде двоичных дробей.Вместо этого они представлены в виде приближений.
Более того, float
обычно имеет длину 32 бита, что означает, что он не имеет столько значащих цифр.Вы можете видеть в своих примерах, что они точны с точностью до 8 значащих цифр.
Однако вы печатаете числа, немного превышающие их значение, и поэтому вы видите разницу.Посмотрите документацию к строке формата printf
, чтобы узнать, как печатать меньше цифр.
Возможно, вам потребуется точно представить десятичные числа;это часто происходит в финансовых приложениях.В этом случае вам необходимо использовать специальную библиотеку для представления чисел или просто вычислить все как целые числа (например, представлять суммы в виде центов, а не в долларах и долях доллара).1011 * Что должен знать каждый компьютерщик об арифметике с плавающей запятой , но, похоже, это было бы очень полезно для вас.Кроме того, вы можете использовать форматы Google с плавающей запятой (в частности, стандартные форматы IEEE) или просмотреть их в Википедии, если вам нужны подробности.