2016-09-22 5 views
0

ich mit der Multiplikation von zwei Dezimalstellen ein Problem habe 30.63 und 0.15. Mein Rechner sagt, dass es 4.60 ergeben sollte.Dezimal Multiplikation in php

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

Ergebnis hieraus ist 4.59.

Von dem, was ich gelesen hatte, sollte BCMUL mit Dezimalzahlen arbeiten?

Vielen Dank,

+4

Werfen Sie Ihren Rechner in den Mülleimer. '30,63 x 0,15 = 4,5945 ', die näher an 4,59 ist –

+0

4,59 ist die perfekte Antwort. – Dave

+1

Sie haben Recht - Rechner ist in der Tonne –

Antwort

0

Von the documentation für die $scale Parameter bcmul:

Dieser optionale Parameter wird verwendet, um die Anzahl der Nachkommastellen im Ergebnis fest einzustellen.

Dies bedeutet im Wesentlichen, dass die Anzahl wird unten (oder nach oben für eine negative Zahl) gerundet werden, wenn es verwendet wird, z.B.

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

Für Ihre Werte ist 30.63 * 0.15 gleich 4.5945. Wenn Sie einen $scale Wert von 2 angeben, erhalten Sie 4,59, wie Sie angegeben haben.

Ich bin nicht sicher, warum Sie 4,60 erwarten, es sei denn, Sie erwarten speziell, dass das Ergebnis abgerundet wird bis.