Округление до тысячных php

Округление чисел в PHP

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

В PHP для округления чисел применяются следующие функции:

– round – округление до ближайшего значения;

– ceil – округление до ближайшего значения в большую сторону;

– floor – округление до ближайшего значения в меньшую сторону.

Округление до целого числа

Все функции в качестве основного параметра используют значение с плавающей точкой. Например:

При выполнении каждой функции, получим следующие значения:

При математическом округлении, учитывается значение числа округляемой части. Если оно меньше 5, округляется к меньшему. Если равно или больше 5, округление будет выполнено в большую сторону. В данном случае функция round округляет к меньшему значению, т.к. значение дробной части меньше 0.5. Если использовать значение больше, например:

В результате округления, получим:

Округление числа до заданного количества знаков после запятой

Для такого округления чисел используется только функция round, имеющая второй (не обязательный) параметр, определяющий точность округления. Задав его можно получить необходимое количество знаков после запятой:

Другие примеры округления

Если вдруг потребовалось реализовать более экзотическое округление – к большему или меньшему значению с заданным количеством знаков после запятой, потребуются дополнительные операции. Как было сказано выше, функции ceil и floor имеют только один параметр и не смогут округлить число до заданной точности.

В таких случаях можно выполнить умножение числа, чтобы затем округлить нужным способом. Например, число нужно округлить до большего значения с двумя знаками после запятой:

В результате получим 123.84, хотя аналогичное округление функцией round> в данном случае вернуло бы 123.83.

Так же можно поступить, если нужно округлить до меньшего значения с заданной точностью:

Источник

Очень часто в разработке интернет-магазина надо округлять цены в большую или меньшую сторону. Предлагаю рассмотреть функции, которые помогут вам решить проблемы с округлением чисел.

Стандартные функции PHP

Язык программирования PHP имеет 3 основных функции округления:

echo round(5.1); // 5
echo round(5.5); // 6

echo ceil(5.1); // 6
echo ceil(7.5); // 8

echo floor(4.3); // 4
echo floor(6.9); // 6

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

Округление числа до сотых

Например, если необходимо округлить число 12.5658 до сотых в большую сторону, может пригодится такая конструкция:

$x = 12.5658
echo ceil($x * 100) / 100; // 12.57

То же самое, только с floor(), если надо округлить в меньшую сторону:

$x = 12.5658
echo floor($x * 100) / 100; // 12.56

С функцией round() все немного проще. Для нее можно указать точность округления:

echo round(12.5658, 2); // 12.57

Округление с коэффициентом

А вот хитрое решение, если надо округлить любой число до какого-нибудь кратного числа. Например, стоит задача округлять цены в интернет-магазине до 50-ти. Т.е. число 120 округлить до 150, а 1210 округлить до 1250 и т.д.

Для решения пододбной задачи я предлагаю воспользоваться функцией:

Вот так используя такой набор функций можно округлять числа без проблем!

Источник

round

(PHP 4, PHP 5, PHP 7, PHP 8)

round — Округляет число типа float

Описание

Возвращает округлённое значение num с указанной точностью precision (количество цифр после запятой). precision может быть отрицательным или нулём (по умолчанию).

Список параметров

Значение для округления.

Количество десятичных знаков, до которых производится округление

Если precision положительный, num округляется до точности precision цифр после запятой.

Возвращаемые значения

Список изменений

ВерсияОписание
8.0.0num больше не принимает внутренние объекты, поддерживающие числовое преобразование.

Примеры

Пример #1 Пример использования round()

Результат выполнения данного примера:

Пример #2 Как параметр precision влияет на числа с плавающей точкой

Результат выполнения данного примера:

Пример #3 Примеры использования параметра mode

Результат выполнения данного примера:

Пример #4 Примеры использования параметра mode с указанием точности precision

Результат выполнения данного примера:

Смотрите также

User Contributed Notes 32 notes

In my opinion this function lacks two flags:

In accounting, it’s often necessary to always round up, or down to a precision of thousandths.

I approach it using round function inside the number_format function:

If you have negative zero and you need return positive number simple add +0:

I discovered that under some conditions you can get rounding errors with round when converting the number to a string afterwards.

To fix this I swapped round() for number_format().

essentially I had round(0.688888889,2);

which would stay as 0.68888889 when printed as a string.

But using number_format it correctly became 0.69.

Okay, final version of my function:

It can be useful in come cases when built-in function like round() or number_format() returns unexpected results. Works with positive and negative numbers, zero, numbers like 1/12, 0.3, numbers in scientific notation etc.

Источник

WEB IT blog

Блог про веб-разработку, администрирование, дизайн

PHP, округление до десятков и сотен в большую сторону

четверг, 10 ноября 2011 г.

Чтобы цена товара в интернет-магазине не была отпугивающей для посетителя, иногда нужно округлить её до целых десятков. Например, 113 руб до 120 руб, 458 руб до 460 руб.
В PHP есть готовые функции округления ceil и round, но в исходном виде для текущей задачи они не совсем подходят.
Так что кусочек простого и понятного кода вам в помощь:

если 10 сменить на 100, то получим округление до сотен и цена 112.12 превратится в 200 рублей.

19 коммент.:

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Да без проблем ) Всегда рад.

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Супер! СПасибо! Очень долго искал!

Вариант, если нужно округление например по 5, а не по 10.

Александр, спасибо за вариант!

Все нормальные программисты знают как работает round и ceil, но задача в посте была округлить в большую сторону даже если по логике round() оно должно “окрулиться” в меньшую. Код выше тому пример.

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Спасибо за ваше решение данной проблемы!

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Отличное решение. Спасибо большое.

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

извиняюсь. ) со знаком все верно!
$p=($t_p-$p)>=5?$t_p-5:$t_p;

а в корзину все равно при таком подходе товары будут ложится с ценой 133 и т.д. ((((

Алексей, так округляйте цену при записи товара в базу, никаких проблем.

так и делаю. Жаль что нельзя как-то через маску в настройках валюты

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Выручили! Единственный сайт где готовое решение есть, а не целый свиток теории и предположений 🙂

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

хорошее решение спасибо!

Округление до тысячных php. Смотреть фото Округление до тысячных php. Смотреть картинку Округление до тысячных php. Картинка про Округление до тысячных php. Фото Округление до тысячных php

Источник

Округление до тысячных php

(PHP 4, PHP 5, PHP 7, PHP 8)

ceil — Округляет дробь в большую сторону

Описание

Список параметров

Значение, которое требуется округлить в большую сторону

Возвращаемые значения

Список изменений

ВерсияОписание
8.0.0num больше не принимает внутренние объекты, поддерживающие числовое преобразование.

Примеры

Пример #1 Пример использования ceil()

Смотрите также

User Contributed Notes 21 notes

I needed this and couldn’t find it so I thought someone else wouldn’t have to look through a bunch of Google results-

I couldn’t find any functions to do what ceiling does while still leaving I specified number of decimal places, so I wrote a couple functions myself. round_up is like ceil but allows you to specify a number of decimal places. round_out does the same, but rounds away from zero.

Actual behaviour:
echo ceil(-0.1); //result “-0” but i expect “0”

Workaround:
echo ceil(-0.1)+0; //result “0”

Or for the terniary fans:

?>

Slightly pointless, but there you have it, in one line only..

$test_1 = ceil($test);
$test_2 = ceil($test * 10);

var_dump($test_1); // float 4
var_dump($test_2); // float 31

Ceil for decimal numbers with precision:

function ceil_dec($number,$precision,$separator)
<
$numberpart=explode($separator,$number);
$numberpart[1]=substr_replace($numberpart[1],$separator,$precision,0);
if($numberpart[0]>=0)
<$numberpart[1]=ceil($numberpart[1]);>
else

$ceil_number= array($numberpart[0],$numberpart[1]);
return implode($separator,$ceil_number);
>

echo ceil_dec(1.125,2,”.”); //1.13
echo ceil_dec(-1.3436,3,”.”); //-1.343
echo ceil_dec(102938.1,4,”.”); //102938.1

php > echo 100 * 1 * 0.07;
7
php > echo ceil(100 * 1 * 0.07);
8

Here is a navbar using the ceil function.

$k = 0.14 * 100;
echo ceil($k); // results 15

solution is in converting float number to string

Example 1.
echo ceil (“<$k>“); // results 14

useful for ‘ceil’ with precision capability

That’s not always true. round() doesn’t work that way, like zomis2k said it just rounds up _or_ down to the nearest non-decimal number. However this should work.

Note that ‘ceil’ can show unexpected behaviour when using float values due to inaccuracies in the float system and PHP tendency to freely limiting the number of digits it displays to the user.
It might like it is rounding up values that end in 0 (zero) but actually PHP is not showing that the value is not exactly the value it shows.

Here is a more accurate way to round on superior decimal.

The code below rounds a value up to a nearest multiple, away from zero. The multiple does not have to be a integer. So you could round, say, to the nearest 25.4, allowing you to round measurements in mm to the nearest inch longer.

The inline code above nests one conditional statement inside another. The value of y changes twice within the same line (three times, if you count the pre-increment). The value of each assignment is used to determine branching within the conditional statement.

How it works can more easily be seen from the expansion below:

Putting the in-line code inside the function: the difference in execution speed between myCeilingLong() and myCeilingShort() is around 1.5%.

Источник

Leave a Reply

Your email address will not be published. Required fields are marked *