Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将两个数字相加时总是得到错误的值_Php_Math - Fatal编程技术网

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

Php 将两个数字相加时总是得到错误的值,php,math,Php,Math,这是迄今为止我遇到的最奇怪的问题之一, 我有两个数字,我正试图在php中相加,但由于某些原因,php并没有给我正确的结果 我试图将$itemPrice与$shipPrice一起添加,这是3.50+2.80,它应该给我6.30,但我得到的是5 我尝试过使用floatVal()函数,但这没有什么区别,有人有什么想法吗 下面是代码示例 php代码 foreach($resp->ListOrderItemsResult->OrderItems->OrderItem as $order)

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

我试图将
$itemPrice
$shipPrice
一起添加,这是
3.50+2.80
,它应该给我
6.30
,但我得到的是
5

我尝试过使用
floatVal()函数
,但这没有什么区别,有人有什么想法吗

下面是代码示例

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具体转换为float。

检查数据库中的amount数据类型输出和price字段的数据类型。

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

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

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

您的PHP或数据库不是英语语言环境吗?我猜您的十进制分隔符是逗号
3.50
被视为
3
。。。对不起,当你计算总数时,应该在数学中进行选择。我编辑了我的答案来说明这一点。