PHP;сумма возвращенных номеров из eBay API неверна - PullRequest
2 голосов
/ 24 января 2012

Похоже, у меня проблема с округлением (сортировкой) чисел в PHP по умолчанию, я звоню в eBay API и возвращаю цену товара и почтовые расходы.Мне нужно добавить эти два числа, прежде чем вводить их в свою базу данных, проблема заключается в том, что когда я складываю два числа, они возвращаются со странным значением:

shipping = 5.95
item price = 18.55

Если я добавлю два, яполучить результат 23.

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

Нужно ли сообщать php, что возвращаемое значение является числом?

Ответы [ 3 ]

3 голосов
/ 24 января 2012

Убедитесь, что оба ваших значения являются целыми числами или числами с плавающей точкой, а не строками.Суммирование строк друг с другом может привести к странному поведению.

Попробуйте:

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

Теперь $ sell должен состоять из числа с плавающей запятой.Вы можете использовать (float) для приведения переменной к плавающей переменной.

0 голосов
/ 24 января 2012

Проблема не в том, что $ 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); 

И это должно сработать!

0 голосов
/ 24 января 2012

Взгляните на typecasting в целом, что весьма важно в различных сценариях для вас как разработчика PHP.

...