Сравнение десятичных знаков в PHP

У меня есть форма ввода, чтобы получить номер (это цена). Он может быть десятичным, как 102,5. Я должен сравнить его с другим десятичным числом, например, 102,6. Как можно справиться с этим? Я не хочу использовать round (), потому что я точно разбираюсь.

Вы можете сравнить абсолютную (то есть численную) разницу с «эпсилон» (ваш «допуск» 1 ):

$epsilon = 0.01; $diff = abs(102.5 - 102.6); // .1 if ($diff <= $epsilon) { // The numbers are equal } else { // The numbers are not equal enough! } 

И, немного читаю: « Что каждый компьютерный ученый должен знать о арифметике с плавающей точкой » и « Сравнение чисел с плавающей точкой ».

Кроме того, вы можете найти следующие вопросы (и ответы!):

  • Самый эффективный способ для плавающего и двойного сравнения
  • Что случилось с использованием == для сравнения float в Java?

1 Правильно: вы должны решить, что делает два числа равными. Это может быть 0.1 (что составляет 1.1 равное 1.0 ), 0.01 ( 1.03 ) и т. Д.

Не храните цены как плавающие, используйте целые числа (хранить центы, а не доллары).

Просто сделайте его десятичным из этого формата

 $kinda_decimal = "102,5"; $kinda_decimal = floatval(str_replace(",",".",$kinda_decimal)); 

и сравните его