2013-07-15 6 views
1

В настоящее время я разделяю два значения, чтобы получить процент от фактического счета и общего количества для моего приложения.Round Percentages PHP

Я использую следующую формулу:

echo ($fakecount/$totalcount) * 100; 

Это дает мне значение как: 79.2312313. Я бы оценил значение, как 79%.

Я попытался следующие:

echo round($fakecount/$totalcount) * 100; 

это, кажется, не работает правильно.

Любые предложения?

+1

добавить '* 100' внутри круглого:' эхо раунд ($ fakecount/$ totalcount * 100); ' –

ответ

4

попробовать

echo (int)(($fakecount/$totalcount) * 100+.5); 

для лучшей производительности. Я добавляю 0,5, прежде чем принимать значение пола, как без добавления 0,5 до округления, вы получите 19 19,8, но после добавления 0,5 это 20,3 и округления это обеспечит 20 :)

+1

Кастинг для' int' такой же, как 'floor()'. Используйте 'round()' для получения ближайшего значения. – rjmunro

+0

@rjmunro мой будет возвращать то же значение, что и round(), когда я добавил 0.5 перед типом cast :) – Fallen

+0

Извините, не заметил этого. Вы уверены, что выполнение casting to int лучше, чем использование round(), с достаточным запасом, чтобы быть быстрее, чем дополнительное дополнение? – rjmunro

1
echo intval(($fakecount/$totalcount) * 100); 

Или вы можете использовать

echo floor(($fakecount/$totalcount) * 100); //Round down 

Или

echo ceil(($fakecount/$totalcount) * 100); // Round Up 
+0

'intval()' такое же, как 'floor () '. Используйте 'round()' – rjmunro

0

использовать круглый функция()

echo round(($fakecount/$totalcount) * 100); 

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

другие, которые можно использовать в

  • CEIL() - круглые фракции до
  • этаж() - круглые фракции вниз
7

Вам нужно умножить на 100 перед вами раунд, не после:

echo round($fakecount * 100/$totalcount); 

Вы вычисляете $fakecount/$totalcount, который будет числом от 0 до 1, тогда вы округлите его, так что вы получите либо 0, либо 1, затем умножьте на 100, давая 0 или 100 для вашего процента.

0

Нету ...

Существует много способов сделать это.

$mypercent = ($fakecount/$totalcount) * 100; 

Помните .. это первый бежать, что находится внутри (ххх) и после воли * 100.

После этого ...

echo round($mypercent); 

И вы можете использовать много правила по этому тоже, если хотите ...

<i>if ($value < 10) { 
    $value = floor($value); 
} else { 
    $value = round($value); 
}</i> 

Не забудьте также увидеть, что другие команды тоже, может быть, вам это понадобится.

CEIL() - круглые фракции до

этаж() - круглые фракции вниз

=)