将两个数字相加时总是得到错误的值


Always getting wrong value when adding two up numbers

这是我迄今为止遇到的最奇怪的问题之一,我有两个数字,我试图用 php 加起来,但由于某种原因,php 没有给我正确的结果。

我正在尝试添加带有$shipPrice$itemPrice,这3.50 + 2.80应该给我6.30,但相反,我得到了5.

我试过使用floatVal() function但这没有区别,有人有任何想法吗?

下面是代码的示例

PHP代码

foreach($resp->ListOrderItemsResult->OrderItems->OrderItem as $order){
   $itemPrice =  $order->ItemPrice->Amount;
   $shipPrice = $order->ShippingPrice->Amount;
   $total = $itemPrice + $shipPrice;
   $arr[] = array(
      'sku' => $order->SellerSKU,
      'isbn' => $order->ASIN,
      'title' => $order->Title,
      'item_price' => $itemPrice,
      'ship_price' => $shipPrice,
      'total' => $total,
      'quantity_shipped' => $order->QuantityShipped,
   );
}

输出

sku             isbn         title  item_price  ship_price  total   quantity_shipped
VM-F5TU-BN0K    1844831531   xxxxx  3.50        2.80            5   1

我的猜测是$itemPrice和$shipPrice是字符串,当您尝试将它们相加时,您会得到值 5。 如果对象中存储为字符串,请确保专门将$itemPrice和$shipPrice转换为浮点数。

检查数据库中价格字段的金额数据类型输出和数据类型。

$total = (float) $itemPrice + (float) $shipPrice;

我知道很多程序员,他们不是处理小数,而是将价格以美分为单位,然后将美分转换为美元金额。 您可以通过查看"PHP 虚拟属性"来找到有关此内容的更多信息。

这可以防止舍入错误等。 加上整数由计算机更好地处理。