PHP les nombres réels ne pas ajouter correctement - virgule manquante

Je suis en train d'essayer d'obtenir le total de mes variables contenant des nombres, certains peuvent être des décimales. J'ai besoin de cette à deux décimales, et je suis en utilisant le number_format() fonction.

$total =  $order->order->net+$order->order->deductions+$order->order->vat+$order->order->postage+$order->order->postage_tax; 
            echo number_format((float)$total, 2, '.', '');?>

J'ai remarqué que les valeurs suivantes ne s'additionnent pas correctement et semble ignorer la virgule. Le total devrait être 118.50 mais au lieu de cela je obtenir 118.00.

100+0+17.5+1+0

J'ai fait des recherches et trouvé le ci-dessous

http://floating-point-gui.de/basic/

Je suis un peu confus par elle. Quelqu'un peut-il expliquer ce que je dois faire?

*MODIFIER
Ci-dessous est de vidage de l'ordre de $variable indiquant les nombres, je suis en train d'ajouter. Vous pouvez voir les 17,5 17,5 et pas 17. Est-ce parce qu'ils sont prescrits comme étant des chaînes peut-être?

object(SimpleXMLElement)#12 (21) { ["id"]=> string(6) "922704" ["shopkeeper_orderno"]=> string(4) "1001" ["customer"]=> string(6) "797893" ["creationdate"]=> string(16) "29-05-2012 11:55" ["net"]=> string(3) "100" ["vat"]=> string(4) "17.5" ["status"]=> string(1) "1" ["isnew"]=> string(1) "0" ["deductions"]=> string(1) "0" ["postage"]=> string(1) "1" ["paymentmethod"]=> string(20) "PayPal " ["instructions"]=> object(SimpleXMLElement)#17 (0) { } [2]=> object(SimpleXMLElement)#22 (1) { ["items"]=> object(SimpleXMLElement)#30 (9) { ["id"]=> string(7) "1384486" ["headerID"]=> string(6) "922704" ["productID"]=> string(7) "4959678" ["description"]=> string(13) "Wedding dress" ["net"]=> string(3) "100" ["vat"]=> string(4) "17.5" ["qty"]=> string(1) "1" ["formID"]=> string(2) "-1" ["options"]=> object(SimpleXMLElement)#31 (1) { ["options"]=> array(2) { [0]=> object(SimpleXMLElement)#32 (6) { ["id"]=> string(6) "519981" ["orderDetailsID"]=> string(7) "1384486" ["optionid"]=> string(6) "646934" ["optionCost"]=> string(1) "0" ["optionVAT"]=> string(1) "0" ["customText"]=> string(9) "size : 12" } [1]=> object(SimpleXMLElement)#33 (6) { ["id"]=> string(6) "519982" ["orderDetailsID"]=> string(7) "1384486" ["optionid"]=> string(6) "647285" ["optionCost"]=> string(1) "0" ["optionVAT"]=> string(1) "0" ["customText"]=> string(14) "Colour : Ivory" } } } } } } ["postage_tax"]=> string(1) "0" ["dispatched"]=> string(1) "0" ["paybyotherid"]=> string(2) "-1" ["wheredidyouhearid"]=> string(2) "-1" }

118.50 est différentes massivement à partir de 118.00 donc je ne pense pas que sa à virgule flottante de faute ici. Il ne se produit que sur de très grands/petits nombres. Pouvez-vous vous donner un var_dump de $ordre s'il vous plaît?
Si vous passer le nombre des matières, travaux. L'écho de toutes les variables utilisées dans le calcul et vérifier qu'ils sont vraiment ce que vous pensez/disent qu'ils sont.

OriginalL'auteur LeeTee | 2012-06-28