2

默认情况下,我似乎遇到了 PHP 舍入(某种)数字的问题,我正在调用 eBay API 并取回商品的价格和邮资。我需要在将这两个数字输入我的数据库之前添加它们,问题似乎是当我将这两个数字相加时,它们会返回一个奇怪的值:

shipping = 5.95
item price = 18.55

如果我将两者相加,我会得到23.

$ship = $item->shippingInfo->shippingServiceCost;
$price = $item->sellingStatus->currentPrice;
$sell = ($ship + $price);

我需要告诉php返回的值是一个数字吗?

4

3 回答 3

3

确保您的两个值实际上都是整数或浮点数,而不是字符串。将字符串相加可能会导致奇怪的行为。

试试这个:

$ship = (float) $item->shippingInfo->shippingServiceCost;
$price = (float) $item->sellingStatus->currentPrice;
$sell = ($ship + $price);

现在 $sell 应该包含一个浮点数。您可以使用(float)将变量转换为浮动变量。

于 2012-01-24T11:13:51.287 回答
0

看一下一般的类型转换,这对于作为 PHP 开发人员的各种场景都非常重要。

于 2012-01-24T11:24:07.663 回答
0

问题不是 $ship 是一个带有5.95.. 的字符串,可以正确转换为 float 但我认为它是 ..5,95并且会转换为 5

<?php
$ship = "5,95";
$price = "18,55";
$sell = ($ship + $price);
echo "$sell = ($ship + $price)";

?>

输出:

23 = (5,95 + 18,55)

转变:

<?php
$ship = (float) "5,95";
$price = (float) "18,55";
$sell = ($ship + $price);
echo "$sell = ($ship + $price)";
?>

输出:

23 = (5 + 18)

采用:

$ship = str_replace(',','.',$ship);
$price = str_replace(',','.',$price); 

它应该工作!

于 2012-01-24T11:25:14.023 回答