EDIT: переустроенном в использовании раунда, который возвращает поплавокПреобразование числа в строку, а затем сравнивая в PHP
Я Конвертирование я округление числа до 2 знаков после запятой, используя круглую функцию
Моего вопрос об этой линии кода ниже:
Могут ли быть ошибки округления или неожиданного поведения, которые могут привести к тому, что это условие будет истинным, когда это не должно быть?
if ($cc_amount > $total)
ПОЛНЫЙ КОД:
$cc_amount = round($this->sale_lib->get_payment_total('credit'),2);
$total = round($this->sale_lib->get_total(),2);
//Since they are floats could there be rounding errors?
if ($cc_amount > $total)
{
$this->_reload(array('error' => 'Credit card payment is greater than total');
}
Почему бы вам просто не сравнить цифры как цифры? –
Почему не просто '$ rounded = round ($ num, 2)'? форматирование в строку, а затем регулярное выражение неэффективно. и считайте, что в качестве строк '' 9 '<' 12'' является ложным, если вы делаете что-то неправильно. –
Если вы обеспокоены округлением, вы можете раунд на лету: 'if (round ($ cc_amount, 2)> round ($ total, 2))' – kainaw