Как проверить равенство значений округления в PHP - PullRequest
0 голосов
/ 24 октября 2019

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

Неправильное отображение статуса

Вот мой код

$total_amount = $row->total;
$paid = $row->paid_amount;

if($paid > '0.00'){
 echo '<span class="label label-warning">Partial</span>';   
} elseif($total_amount != $paid) {
 echo '<span class="label label-primary">Unpaid</span>';
} elseif($total_amount == $paid ){
 echo '<span class="label label-success">Paid</span>';
}

Пожалуйста, помогите мне решить эту проблему. Это мой школьный проект, и он должен быть представлен завтра.

1 Ответ

1 голос
/ 24 октября 2019

Сравнение чисел с плавающей запятой обычно проблематично, так как есть проблемы с точностью. Есть дополнительные проблемы в порядке ваших утверждений if / elseif. Эти операторы будут выполняться сверху вниз, вводя только первый соответствующий блок. Я бы изменил ваш код следующим образом, чтобы округлить ваши значения, изменить порядок выражений if и сравнить их с < или >=:

$total_amount = round($row->total, 2);
$paid = round($row->paid_amount, 2);

if ($paid <= 0){
  echo '<span class="label label-primary">Unpaid</span>';
} elseif ($paid < $total_amount) {
  echo '<span class="label label-warning">Partial</span>';   
} elseif ($paid >= $total_amount) {
  echo '<span class="label label-success">Paid</span>';
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...