0

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

我正在尝试添加应该给我$itemPrice$shipPrice,但我得到了。3.50 + 2.806.305

我尝试过使用,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
4

4 回答 4

5

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

于 2012-08-02T19:05:05.337 回答
2

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

于 2012-08-02T19:08:34.880 回答
1
$total = (float) $itemPrice + (float) $shipPrice;
于 2012-08-02T19:10:57.890 回答
1

我知道很多程序员不会处理小数,而是将价格以美分表示,然后将美分转换为美元金额。您可以通过查看“PHP 虚拟属性”找到更多相关信息。

这防止了舍入误差等。加号整数由计算机处理得更好。

于 2012-08-02T19:11:25.187 回答