PHP круглый и потолок неправильно обрабатывает данные - PullRequest
1 голос
/ 30 марта 2012

Числа, которые извлекаются из файла XML и затем назначаются переменной, но выводятся неправильно.Я не совсем уверен, почему или как обойти это.Примером этого является.

$pricing_high = 1.15;
echo $pricing_high;

Это показывает 1.15, очевидно.Но когда я назначаю это следующим образом:

$price = ceil($pricing_high / 0.05) * 0.05;
echo $price;

Это отображает 2.

$price = round($pricing_high / 0.05) * 0.05;
echo $price;

Это отображает 1.

Как получить числа для правильного округления доближайшие 5 центов при прохождении так?

Ответы [ 3 ]

2 голосов
/ 30 марта 2012

Начиная с документации PHP для функции округления:

http://php.net/manual/en/function.round.php

Вы можете указать точность в качестве второго параметра:

$pricing_high = 1.15;
$price = round($pricing_high / 0.05, 2) * 0.05;
echo $price;

Примечание значение второго параметра 2

1 голос
/ 30 марта 2012

1.15 = 1 доллар и 15 центов? Если так:

echo sprintf('%.2f', round($price / 0.05) * 0.05); // Rounds to nearest
echo sprintf('%.2f', ceil($price / 0.05) * 0.05); // Rounds up

Тесты:

$price = 1.13;

echo sprintf('%.2f', round($price / 0.05) * 0.05); // Outputs: 1.15
echo sprintf('%.2f', ceil($price / 0.05) * 0.05); // Outputs: 1.15

$price = 1.12;

echo sprintf('%.2f', round($price / 0.05) * 0.05); // Outputs: 1.10
echo sprintf('%.2f', ceil($price / 0.05) * 0.05); // Outputs: 1.15

Если 1.15 = 1,15 цента, то заменить 0.05 на 5.

0 голосов
/ 30 марта 2012

Поскольку ceil () и floor () не обладают такой точностью, вы можете умножить свои результаты и разделить их после.

...