Можете ли вы безопасно сравнить два числа с плавающей запятой, округлив их в PHP?

Вместо того, чтобы использовать эпсилон для сравнения с плавающей запятой, можете ли вы надежно сравнить два числа с плавающей запятой на предмет эквивалентности, округлив их до нужной точности?

Например:

round($float, 3) === round($otherFloat, 3)

person user1842104    schedule 21.08.2015    source источник
comment
если у вас все в порядке, круглое (плавающее), а не исходное плавающее, то все в порядке   -  person    schedule 21.08.2015
comment
Это то, о чем я спрашиваю. Для протокола: я не спрашивал, как мне сравнивать числа с плавающей запятой, это не повторяющийся вопрос.   -  person user1842104    schedule 21.08.2015


Ответы (1)


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

person Brick    schedule 21.08.2015
comment
Хороший вопрос, но прав ли я, предполагая, что это будет иметь значение только в том случае, если я округлю до очень высокой точности? - person user1842104; 21.08.2015