0

これは私がこれまでに遭遇した最も奇妙な問題の1つであり、phpで合計しようとしている2つの数値がありますが、何らかの理由でphpでは正しい結果が得られません。

私はそれが私に与えるはず$itemPriceのでを追加しようとしていますが、代わりに私は得ます。$shipPrice3.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をfloatとして具体的にキャストしていることを確認してください。 。

于 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 に答える