2017-02-14 5 views
1

У меня есть код, где я получил некоторые цифры, как это:Как сократить десятичное число с помощью PHP

92.682926829268 

Я бы хотел сократить их, как это:

92.68 

Это мой код :

<td><?php if (($row['TotalMatch']) > 10){ echo ($row['OK_05']/$row['TotalMatch']) * 100; } ?></td> 

Я попытался с пола и вокруг, но я получаю тот пример, который я показал в начале поста (92.682926829268 я nstead из 92.68)

Спасибо за внимание

С уважением!

EDIT Не могли бы вы привести пример с моим кодом? Спасибо

+5

_round (92.682926829268, ** 2 **); _ должен быть вашим другом –

+1

*, но я не получаю то, что хочу * - Пожалуйста, уточните. Мы не можем читать ваши мысли. – Mike

+2

Да, что вы делаете? Код в вашем вопросе не включает пол или круг. Если вы можете показать, что вы сделали с этими функциями, кто-то может сказать вам, почему это не принесло вам желаемого результата. –

ответ

2

выражение, которое вы пытаетесь формат таков:

($row['OK_05']/$row['TotalMatch']) * 100 

Так какой функции вы решите использовать потребности идти вокруг этого выражение.

Что касается использования функции, вам нужно выбрать тот, который возвращает строку, а не поплавок.

Если вы используете round, а ваше выражение возвращает поплавок, округленный до числа с двумя нулями после десятичной точки, конечные нули не будут отображаться в результате. Например, echo round(92.0006829268, 2) отобразит 92, не92.00. Поэтому не используйте round, если вам нужно убедиться, что отображаются две десятичные знаки. round - математическая функция, а не функция форматирования.

floor действительно не полезен вообще здесь, так как он возвращает число без десятичных знаков.


Простой способ заключается в использовании sprintf, как показано в некоторых других ответов.

echo sprintf("%.2f", ($row['OK_05']/$row['TotalMatch']) * 100); 

Первый аргумент sprintf является "%.2f", который представляет собой строку формата, указывающий, что второй аргумент должен отображаться как поплавок с двумя знаками после запятой. Второй аргумент - ваше выражение.

Использование bcdiv, как предложено в другом ответе, также будет работать, но оно работает несколько иначе, чем sprintf, и в некоторых случаях будет производить несколько иной результат.

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

echo sprintf("%.2f", 926.89/10); // outputs 92.69 

и bcdiv усечет вместо этого, так

echo bcdiv(926.89, 10, 2);   // outputs 92.68 

Какой бы ни одна из этих работ для вас, сделайте это.

+0

Это прекрасно, спасибо! – James69

3

Используйте sprintf() для форматирования номера.

echo sprintf("%.2f", 92.682926829268);

Пример: https://3v4l.org/U87T9

+0

Не могли бы вы показать мне в моем примере, пожалуйста? потому что я не знаю, как я могу вставить его в свой код. Спасибо – James69

2

Вы можете использовать круглую функцию

$var = 92.682926829268; 
$var = round($var, 2) 

Или используйте Sprintf (%.2f сокращает число)

$var = sprintf("%.2f", $var); 
-1

Попробуйте использовать Sprintf какниже:

<?php 
$mynumber = 98.343434; 
echo sprintf('%.2f', $mynumber); // this will output 98.34 
0

Вы можете использовать bcdiv()

bcdiv($row['OK_05'], ($row['TotalMatch'] * 100), 2);