2013-12-04 3 views
-1

Моя переменная показывает этот путь <?php echo round($value, 2); ?>. Теперь я округлю свое значение только двумя десятичными знаками.PHP round function

Я хочу округлить результат от моей переменной таким образом:

Случай 1:

if the result is 1,1 -> it must show 1,1000 
if the result is 1,12 -> it must show 1,1200 
if the result is 1,123 -> it must show 1,1230 
if the result is 1,1234 -> it must show 1,1234 

Случай 2:

if the result is 11 -> it must show 11,000 
if the result is 111 -> it must show 111,00 
if the result is 1111 -> it must show 1111,0 
if the result is 11111 -> it must show 11111 

Но если результат более 5 цифр (123 456) Мне нужно отобразить 123456 без запятой или десятичными знаками.

Идея состоит в том, что мне не нужно отображать любые десятичные числа, если число имеет более 5 цифр. Я не понимаю, как это сделать.

Спасибо всем за помощь.

+12

Что вы пытаетесь? Со смесью 'strpos()' и 'number_format()' это должно быть довольно легко. – Pitchinnate

ответ

3

Попробуйте это (работает только со значениями больше нуля):

echo number_format($value, $value < 10000 ? 5 - strlen((int)$value) : 0, ',', ''); 

Или это (так же работает с отрицательными значениями):

echo number_format($value, abs($value) < 10000 ? 5 - strlen((int)abs($value)) : 0, ',', ''); 
+0

Мне удалось работать с вашей помощью :). спасибо – WPguy

1

Случай 1

функция Try sprintf с %01.4f вариант

Например:

$value = 11.12; 
$len = 5; 
echo sprintf("%01." . ($len - strlen(abs((int)$value))) . "f", $value); 
1

Используйте «печать F» или функцию спринта выводит отформатированную строку.

Арг 1, arg 2, параметры будут вставлены в знак процента в основной строке. Эта функция работает «шаг за шагом». При первом знаке добавляется arg 1, на втором знаке процента добавляется arg 2. например