Техника

Зачем используют числа с плавающей запятой?

Подробно об этом написано в литературе по программированию. А как ещё определить дробные числа?
Для процессора тип чисел не имеет значения, только разрядность. Это как бы условность. Можно даже задать свой формат чисел, но и алгоритмы их обработки должны быть определены соответственно.
Василий Квятковский
Василий Квятковский
673
Лучший ответ
научи меня, как еще можно решать задачи, требующие дробных чисел, да еще величины, не известной заранее!

вот у меня программа, по двум фотоснимкам вычисляет положение камеры в момент съемки и рассчитывает размеры объектов. Я не знаю, в чем выражены расстояния, я не знаю, используют ее для замеров под микроскопом или со спутника - как мне считать-то?
Числа с плавающей точкой имеют ограниченную точность. Хотя это зависит от операционной системы, в PHP обычно используется формат двойной точности IEEE 754, дающий максимальную относительную ошибку округления порядка 1.11e-16. Неэлементарные арифметические операции могут давать большие ошибки, и, разумеется, необходимо принимать во внимание распространение ошибок при совместном использовании нескольких операций.

Кроме того, рациональные числа, которые могут быть точно представлены в виде чисел с плавающей точкой с основанием 10, например, 0.1 или 0.7, не имеют точного внутреннего представления в качестве чисел с плавающей точкой с основанием 2, вне зависимости от размера мантиссы. Поэтому они и не могут быть преобразованы в их внутреннюю двоичную форму без небольшой потери точности. Это может привести к неожиданным результатам: например, floor((0.1+0.7)*10) скорее всего вернет 7 вместо ожидаемого 8, так как результат внутреннего представления будет чем-то вроде 7.9999999999999991118....

Так что никогда не доверяйте точности чисел с плавающей точкой до последней цифры, и не проверяйте напрямую их равенство. Если вам действительно необходима высокая точность, используйте математические функции произвольной точности и gmp-функции.
Lidija Matilevica
Lidija Matilevica
5 093