Сравните десятичные дроби в PHP - PullRequest
0 голосов
/ 14 сентября 2010

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

Ответы [ 3 ]

9 голосов
/ 14 сентября 2010

Вы можете сравнить абсолютное (то есть числовое) различие с "эпсилоном" (ваш "допуск" 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!
}

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

Также вам могут быть интересны следующие вопросы (и ответы!):


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

3 голосов
/ 14 сентября 2010

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

0 голосов
/ 14 сентября 2010

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

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

и сравните

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...