Сбит с толку PHP bcmul()
Почему это вывод 87.5
и не 87.50
?
<?php
$quantity = 25;
switch ($quantity)
{
case ($quantity <= 50):
$price = 3.50;
break;
case ($quantity <= 100):
$price = 3.00;
break;
default:
break;
}
echo bcmul($price, $quantity, 2);
// 87.5
?>
3 ответа
Решение
Использование number_format()
вместо bcmul()
echo number_format(bcmul($price, $quantity, 2), 2, '.'); // forces to output always 2 diget after .
Это округление 87,50, поскольку 87,5 будет таким же. Чтобы исправить, вам нужно:
number_format("87.50",2);
Математически 87,5 это 87,50. Если вам нужен дополнительный номер, вы можете использовать number_format
или же money_format
отображать лишние 0
Для php < 7.3 используйте
$val = bcmul('2', '5', 2);
$val = number_format($val, 2, '.', '');
// $val = "10.00"
или используйте php >= 7.3 он исправлен