Developers/Price calculation and comparsion/ru

Расчёт цены и сравнение
При калькуляции, PHP всегда использует округлённые значения при хранении (промежуточных) результатов, а их точность ограничена. Даже если ошибки округления невелики, иногда это может иметь неожиданный эффект, особенно при сравнении результатов с, например, десятичным строковым значением.

( $result == '0.7' ? true : false )

В зависимости от предварительных вычислений, переменная $result может иметь слегка другое значение, например, 0.69999999. При указанном сравнении результат будет "ложь/false", а не ожидаемый "истина/true". Покуда используется сравнение значений в виде меньше (<=) или больше (>=), проблем не будет, но как только нужно узнать равенство величин, необходимо использовать следующий подход:

abs( $result - '0.7' ) < 0.01

Так при сравнении учитывается разница между значениями в допустимых пределах. Дополнительную информацию по этой проблеме можно почерпнуть здесь: PHP тип с плавающей точкой.