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

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

Например:

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

1 ответ

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

Другие вопросы по тегам