Php 将两个数字相加时总是得到错误的值
这是迄今为止我遇到的最奇怪的问题之一, 我有两个数字,我正试图在php中相加,但由于某些原因,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)
$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
。。。对不起,当你计算总数时,应该在数学中进行选择。我编辑了我的答案来说明这一点。