Я наткнулся на странную проблему с intval() - мне нужно показать 2 числа после десятичной точки без округления результата. Поэтому я использую intval() таким образом:Intval() странное поведение - потеря точности
$result = ($data['a']/$data['b'])*100;
$data['x'] = intval(($result)*100)/100;
Таким образом, он отлично работает для почти всех результатов, но это показывает, какое-то странное поведение - вторая цифра после запятой идет вниз с 1 для некоторых результатов. Например:
$data['a'] = 16.58; (float)
$data['b'] = 200; (int)
$result = 8.29;
$data['x'] = 8.28;
($ данных [ «а»] всегда всплывают и [ «б»] всегда ИНТ)
Есть ли способ предотвратить этот странный эффект, и почему это происходит?
Заранее спасибо.
Я думаю, что лучше было бы использовать 'bcdiv()': 'bcdiv (2,9999, 1, 2); // 2.99' [docs] (http://php.net/manual/en/function.bcdiv.php) – mineroot
Вы пытались посмотреть bcmath lib? http://php.net/manual/en/book.bc.php –
Или пол ($ result * 100)/100? Так как вам кажется, что вам нужна двузначная фиксированная ширина? – Fredster