2016-09-22 5 views
0

У меня возникли проблемы с умножением двух десятичных знаков 30.63 и 0.15. Мой калькулятор говорит, что это должно привести к 4.60.Decimal умножение в PHP

$commission = bcmul(30.63, 0.15,2); 

Результат от этого 4.59.

Из того, что я читал, bcmul предназначался для работы с десятичными числами?

Большое спасибо,

+4

Бросьте свой калькулятор в мусорный контейнер. '30.63 x 0.15 = 4.5945', что ближе к 4.59 –

+0

4.59 - прекрасный ответ. – Dave

+1

Вы правы - калькулятор находится в корзине –

ответ

0

С the documentation для параметра $scale в bcmul:

Этот необязательный параметр используется для установки количества цифр после десятичного разделителя в результате.

Это по существу означает, что число будет округлено вниз (или для отрицательного числа), когда он используется, например,

> echo bcmul(0.99, 1, 1); 
0.9 

Для ваших значений 30.63 * 0.15 равно 4.5945. Поставка значения $scale означает, что вы получаете 4.59, как вы сообщили.

Я не уверен, почему вы ожидаете 4.60, если только вы не ожидаете, что результат будет округлен до.

Смежные вопросы