Php формат числа

Среди функций PHP есть такие, которые работают числами, с их выводом. Например, number_format. Она позволяет отформатировать числовые данные. Например, число 123 456.78 будет лучше восприниматься, чем 123456.784321.

PHP функция number_format() — это лёгкий способ форматировать числа для их последующего отображения. Можно разделять разряды, выбирая знак разделения, можно выбирать знак разделения целой и дробной части или вовсе не выводить последнюю.

Основы форматирования чисел в PHP

По умолчанию number_format() принимает число для форматирования и возвращает строку, которая содержит отформатированное число, округлённое до ближайшего целого с разделением каждой группы тысяч с помощью запятой. Рассмотрим пример.

$number = 1234567.89;    // Выводит "1,234,568"    echo number_format( $number );

Так как number_format() возвращает строку, которая содержит символы разделители, то использовать вывод функции number_format() в качестве числовых значений для последующих математических операций или функций нельзя. Поэтому, все вычисления надо производить в оригинальных числовых значениях, а форматировать результат с помощью number_format() только тогда, когда нужно показывать его пользователю.

Задаём количество знаков дробной части числа


Количество знаков в дробной части числа задаётся в качестве второго аргумента функции number_format(). Функция округляет число вверх или вниз до указанного количества десятичных знаков:

$myNumber = 123456.784321;    // Выводит "123,456.78"    echo number_format( $myNumber, 2 );    // Выводит "123,456.8"    echo number_format( $myNumber, 1 );

Использование различных символов разделителей

По умолчанию функция number_format() использует точку для отделения десятичной дробной части и запятую для разделения групп тысяч. Для того, чтобы использовать другие символы, нужно передать новый десятичный разделитель в качестве третьего аргумента в функцию, а новый разделитель тысяч — в качестве четвёртого аргумента.

Следующий пример демонстрирует форматирование чисел в соответствии с Французским стандартом — запятая используется для отделения дробной части числа, а пробел — для отделения групп тысяч.:


$myNumber = 123456.784321;    // Выводит "123 456,78"    echo number_format( $myNumber, 2, ',', ' ' );

Если вам нужно выводить числа в соответствии с Английским стандартом, то есть с округлением до двух десятичных знаков в дробной части и без отделения групп тысяч, нужно использовать следующий вызов функции:

$myNumber = 123456.784321;    // Выводит "123456.78"    echo number_format( $myNumber, 2, '.', '' );

Вывод

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

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

tradebenefit.ru

For those that need to print the word-form of a number ("twenty-three" instead of "23") I've found the following code to be useful.  This code is an improvement upon that posted in 2004 by armstrong @ rice.  Notably, the previous code did not properly compute large numbers (at least in PHP 4.x that I tested). 


The following code adds another variable to the function, which controls the display of fractional parts, and properly calculates values one thousand and above.

Zak
~ ~ ~

function num2words($num, $c=1) {
   $ZERO = 'zero';
   $MINUS = 'minus';
   $lowName = array(
         /* zero is shown as "" since it is never used in combined forms */
         /* 0 .. 19 */
         "", "one", "two", "three", "four", "five",
         "six", "seven", "eight", "nine", "ten",
         "eleven", "twelve", "thirteen", "fourteen", "fifteen",
         "sixteen", "seventeen", "eighteen", "nineteen");
  
   $tys = array(
         /* 0, 10, 20, 30 ... 90 */
         "", "", "twenty", "thirty", "forty", "fifty",
         "sixty", "seventy", "eighty", "ninety");
  
   $groupName = array(
         /* We only need up to a quintillion, since a long is about 9 * 10 ^ 18 */
         /* American: unit, hundred, thousand, million, billion, trillion, quadrillion, quintillion */
         "", "hundred", "thousand", "million", "billion",
         "trillion", "quadrillion", "quintillion");
  
   $divisor = array(
         /* How many of this group is needed to form one of the succeeding group.

         /* American: unit, hundred, thousand, million, billion, trillion, quadrillion, quintillion */
         100, 10, 1000, 1000, 1000, 1000, 1000, 1000) ;
  
   $num = str_replace(",","",$num);
   $num = number_format($num,2,'.','');
   $cents = substr($num,strlen($num)-2,strlen($num)-1);
   $num = (int)$num;
  
   $s = "";
  
   if ( $num == 0 ) $s = $ZERO;
   $negative = ($num < 0 );
   if ( $negative ) $num = -$num;
   // Work least significant digit to most, right to left.
   // until high order part is all 0s.
   for ( $i=0; $num>0; $i++ ) {
       $remdr = (int)($num % $divisor[$i]);
       $num = $num / $divisor[$i];
       // check for 1100 .. 1999, 2100..2999, ... 5200..5999
       // but not 1000..1099,  2000..2099, ...
       // Special case written as fifty-nine hundred.
       // e.g.
ousands digit is 1..5 and hundreds digit is 1..9
       // Only when no further higher order.
       if ( $i == 1 /* doing hundreds */ && 1 <= $num && $num <= 5 ){
           if ( $remdr > 0 ){
               $remdr = ($num * 10);
               $num = 0;
           } // end if
       } // end if
       if ( $remdr == 0 ){
           continue;
       }
       $t = "";
       if ( $remdr < 20 ){
           $t = $lowName[$remdr];
       }
       else if ( $remdr < 100 ){
           $units = (int)$remdr % 10;
           $tens = (int)$remdr / 10;
           $t = $tys [$tens];
           if ( $units != 0 ){
               $t .= "-" . $lowName[$units];
           }
       }else {
           $t = num2words($remdr, 0);
       }
       $s = $t." ".$groupName[$i]." ".$s;
       $num = (int)$num;
   } // end for
   $s = trim($s);
   if ( $negative ){
       $s = $MINUS .
" . $s;
   }
  
   if ($c == 1) $s .= " and $cents/100";
  
   return $s;
} // end num2words

php.svchat.ru

При выводе чисел на веб странице отличным способом улучшить доступность информации является форматирование для облегчения восприятия. Например, число 123,456.78 воспринимается гораздо лучше, чем 123456.784321.

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

Основные опции форматирования чисел

По умолчанию number_format() принимает число для форматирования и возвращает строку, которая содержит отформатированное число, округлённое до ближайшего целого с разделением каждой группы тысяч с помощью запятой:

$myNumber = 1234567.89;    // Выводит "1,234,568"  echo number_format( $myNumber ); 

Так как number_format()
возвращает строку, которая содержит символы разделители, то использовать вывод функции number_format() в качестве числовых значений для последующих математических операций или функций нельзя. Поэтому, все вычисления надо производить в оригинальных числовых значениях, а форматировать результат с помощью number_format() только тогда, когда нужно показывать его пользователю.

Задаём количество знаков дробной части числа

Количество знаков в дробной части числа задаётся в качестве второго аргумента функции number_format(). Функция округляет число вверх или вниз до указанного количества десятичных знаков:

$myNumber = 123456.784321;    // Выводит "123,456.78"  echo number_format( $myNumber, 2 );    // Выводит "123,456.8"  echo number_format( $myNumber, 1 ); 

Использование различных символов разделителей

По умолчанию функция number_format() использует точку для отделения десятичной дробной части и запятую для разделения групп тысяч. Для того, чтобы использовать другие символы, нужно передать новый десятичный разделитель в качестве третьего аргумента в функцию, а новый разделитель тысяч — в качестве четвёртого аргумента.

Следующий пример демонстрирует форматирование чисел в соответствии с Французским стандартом — запятая используется для отделения дробной части числа, а пробел — для отделения групп тысяч.:


$myNumber = 123456.784321;    // Выводит "123 456,78"  echo number_format( $myNumber, 2, ',', ' ' ); 

Если вам нужно выводить числа в соответствии с Английским стандартом, то есть с округлением до двух десятичных знаков в дробной части и без отделения групп тысяч, нужно использовать следующий вызов функции:

$myNumber = 123456.784321;    // Выводит "123456.78"  echo number_format( $myNumber, 2, '.', '' ); 

Вы можете использовать PHP функцию localeconv() для определения текущих установок локали компьютера для десятичной точки и разделителя тысяч — чтобы установить их в функции number_format().

Резюме

Функция number_format() предоставляет лёгкий способ для вывода чисел в удобном для чтения формате.

ruseller.com

Форматируемое число

Первый и обязательный аргумент функции number_format() в PHP — это непосредственно число, которое нужно отформатировать. Выражение будет выглядеть так:

string number_format(float $number)

Параметр $number должен представлять собой число с плавающей точкой.

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

<?php  $number1 = 12345678.4321;  $result1 = number_format($number1); // 12,345,678    $number2 = 12345678.5678;  $result2 = number_format($number2); // 12,345,679  ?>    

Во втором примере произошло округление дробной части.

Дробная часть

Если необходимо сохранить дробную часть, в функцию PHP number_format() необходимо передать второй аргумент.

string number_format(float $number, int $decimals)

$decimals — это целое число (integer), определяющее количество знаков после запятой, которое нужно сохранить. По умолчанию оно равно нулю, поэтому при передаче одного аргумента дробная часть отбрасывается.

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

<?php  $number1 = 12345678.4321;  $result1 = number_format($number1, 2); // 12,345,678.43    $number2 = 12345678.5678;  $result2 = number_format($number2, 1); // 12,345,679.6    $number3 = 12345678;  $result3 = number_format($number3, 3); // 12,345,679.000  ?>

В этом случае также происходит округление дробной части. Вместо недостающих цифр подставляются нули.

Работа функции PHP number_format

Пользовательские разделители

Стандартные разделители, используемые функцией PHP number_format
() можно заменить на любые другие символы. Третий параметр отвечает за отделитель дробной части, а четвертый — за межразрядный символ.

string number_format(float $number, int $decimals, string $dec_point, string $thousands_sep)

И $dec_point, и $thousands_sep являются строковыми данными. В качестве разделителя можно передать любой символ, а также пробел или пустую строку. Из последовательности символов будет использован только первый, остальные обрежутся.

Работа функции php number_format в примерах с четырьмя параметрами:

<?php  $number1 = 12345678.4321;  $number2 = 12345678.5678;  $number3 = 12345678;    $result1 = number_format($number1, 5, '.', ','); // 12,345,678.43210    $result2 = number_format($number2, 5, '^', ' '); // 12 345 678:56780    $result3 = number_format($number2, 5, '-', ''); // 12345678-56780    $result4 = number_format($number3, 5, '***', 'xxx'); // 12x345x678*000    ?>

Разделители заменяются пользовательскими, все остальные правила сохраняются.

Пользовательские разделители в PHP-функции number_format

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

Источник: fb.ru

monateka.com

Форматируемое число

Первый и обязательный аргумент функции number_format() в PHP — это непосредственно число, которое нужно отформатировать. Выражение будет выглядеть так:

string number_format(float $number)

Параметр $number должен представлять собой число с плавающей точкой.

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

<?php  $number1 = 12345678.4321;  $result1 = number_format($number1); // 12,345,678    $number2 = 12345678.5678;  $result2 = number_format($number2); // 12,345,679  ?>

Во втором примере произошло округление дробной части.

Дробная часть

Если необходимо сохранить дробную часть, в функцию PHP number_format() необходимо передать второй аргумент.

string number_format(float $number, int $decimals)

$decimals — это целое число (integer), определяющее количество знаков после запятой, которое нужно сохранить. По умолчанию оно равно нулю, поэтому при передаче одного аргумента дробная часть отбрасывается.

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

<?php  $number1 = 12345678.4321;  $result1 = number_format($number1, 2); // 12,345,678.43    $number2 = 12345678.5678;  $result2 = number_format($number2, 1); // 12,345,679.6    $number3 = 12345678;  $result3 = number_format($number3, 3); // 12,345,679.000  ?>

В этом случае также происходит округление дробной части. Вместо недостающих цифр подставляются нули.

Пользовательские разделители

Стандартные разделители, используемые функцией PHP number_format() можно заменить на любые другие символы. Третий параметр отвечает за отделитель дробной части, а четвертый — за межразрядный символ.

string number_format(float $number, int $decimals, string $dec_point, string $thousands_sep)

И $dec_point, и $thousands_sep являются строковыми данными. В качестве разделителя можно передать любой символ, а также пробел или пустую строку. Из последовательности символов будет использован только первый, остальные обрежутся.

Работа функции php number_format в примерах с четырьмя параметрами:

<?php  $number1 = 12345678.4321;  $number2 = 12345678.5678;  $number3 = 12345678;    $result1 = number_format($number1, 5, '.', ','); // 12,345,678.43210    $result2 = number_format($number2, 5, '^', ' '); // 12 345 678:56780    $result3 = number_format($number2, 5, '-', ''); // 12345678-56780    $result4 = number_format($number3, 5, '***', 'xxx'); // 12x345x678*000    ?>

Разделители заменяются пользовательскими, все остальные правила сохраняются.

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

fb.ru

here is the code to convert number to Indonesian text, this code has limitation as is number_format function. sorry for this.
/*
* Created : Iwan Sapoetra - Jun 13, 2008
* Project : Web
* Package : cgaf
*
*/
function terbilang( $num ,$dec=4){
    $stext = array(
        "Nol",
        "Satu",
        "Dua",
        "Tiga",
        "Empat",
        "Lima",
        "Enam",
        "Tujuh",
        "Delapan",
        "Sembilan",
        "Sepuluh",
        "Sebelas"
    );
    $say  = array(
        "Ribu",
        "Juta",
        "Milyar",
        "Triliun",
        "Biliun", // remember limitation of float
        "--apaan---" ///setelah biliun namanya apa?
    );
    $w = "";

    if ($num <0 ) {
        $w  = "Minus ";
        //make positive
        $num *= -1;
    }

    $snum = number_format($num,$dec,",",".");
    die($snum);
    $strnum =  explode(".",substr($snum,0,strrpos($snum,",")));
    //parse decimalnya
    $koma = substr($snum,strrpos($snum,",")+1);

    $isone = substr($num,0,1)  ==1;
    if (count($strnum)==1) {
        $num = $strnum[0];
        switch (strlen($num)) {
            case 1:
            case 2:
                if (!isset($stext[$strnum[0]])){
                    if($num<19){
                        $w .=$stext[substr($num,1)]." Belas";
                    }else{
                        $w .= $stext[substr($num,0,1)]." Puluh ".
                            (intval(substr($num,1))==0 ? "" : $stext[substr($num,1)]);
                    }
                }else{
                    $w .= $stext[$strnum[0]];
                }
                break;
            case 3:
                $w .=  ($isone ? "Seratus" : terbilang(substr($num,0,1)) .
                    " Ratus").
                    " ".(intval(substr($num,1))==0 ? "" : terbilang(substr($num,1)));
                break;
            case 4:
                $w .=  ($isone ? "Seribu" : terbilang(substr($num,0,1)) .
                    " Ribu").
                    " ".(intval(substr($num,1))==0 ? "" : terbilang(substr($num,1)));
                break;
            default:
                break;
        }
    }else{
        $text = $say[count($strnum)-2];
        $w = ($isone && strlen($strnum[0])==1 && count($strnum) <=3? "Se".strtolower($text) : terbilang($strnum[0]).' '.$text);
        array_shift($strnum);
        $i =count($strnum)-2;
        foreach ($strnum as $k=>$v) {
            if (intval($v)) {
                $w.= ' '.terbilang($v).' '.($i >=0 ? $say[$i] : "");
            }
            $i--;
        }
    }
    $w = trim($w);
    if ($dec = intval($koma)) {
        $w .= " Koma ". terbilang($koma);
    }
    return trim($w);
}
//example
echo terbilang(999999999999)."n";
/**
* result : Sembilan Ratus Sembilan Puluh Sembilan Milyar Sembilan Ratus Sembilan Puluh Sembilan Juta Sembilan Ratus Sembilan Puluh Sembilan Ribu Sembilan Ratus Sembilan Puluh Sembilan
*/
echo terbilang(9999999999999999);
/**
* todo : fix this bug pleasese
* problem : number_format(9999999999999999) <--- 10.000.000.000.000.000,0000
* Result : Sepuluh Biliun
*/

php.net

Форматируемое число

Первый и обязательный аргумент функции number_format() в PHP — это непосредственно число, которое нужно отформатировать. Выражение будет выглядеть так:

string number_format(float $number)

Параметр $number должен представлять собой число с плавающей точкой.

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

<?php
$number1 = 12345678.4321;
$result1 = number_format($number1); // 12,345,678

$number2 = 12345678.5678;
$result2 = number_format($number2); // 12,345,679
?>

Во втором примере произошло округление дробной части.

Дробная часть

Если необходимо сохранить дробную часть, в функцию PHP number_format() необходимо передать второй аргумент.

string number_format(float $number, int $decimals)

$decimals — это целое число (integer), определяющее количество знаков после запятой, которое нужно сохранить. По умолчанию оно равно нулю, поэтому при передаче одного аргумента дробная часть отбрасывается.

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

<?php
$number1 = 12345678.4321;
$result1 = number_format($number1, 2); // 12,345,678.43

$number2 = 12345678.5678;
$result2 = number_format($number2, 1); // 12,345,679.6

$number3 = 12345678;
$result3 = number_format($number3, 3); // 12,345,679.000
?>

В этом случае также происходит округление дробной части. Вместо недостающих цифр подставляются нули.

Php формат числа

Пользовательские разделители

Стандартные разделители, используемые функцией PHP number_format() можно заменить на любые другие символы. Третий параметр отвечает за отделитель дробной части, а четвертый — за межразрядный символ.

string number_format(float $number, int $decimals, string $dec_point, string $thousands_sep)

И $dec_point, и $thousands_sep являются строковыми данными. В качестве разделителя можно передать любой символ, а также пробел или пустую строку. Из последовательности символов будет использован только первый, остальные обрежутся.

Работа функции php number_format в примерах с четырьмя параметрами:

<?php
$number1 = 12345678.4321;
$number2 = 12345678.5678;
$number3 = 12345678;

$result1 = number_format($number1, 5, ‘.’, ‘,’); // 12,345,678.43210

$result2 = number_format($number2, 5, ‘^’, ‘ ‘); // 12 345 678:56780

$result3 = number_format($number2, 5, ‘-‘, »); // 12345678-56780

$result4 = number_format($number3, 5, ‘***’, ‘xxx’); // 12x345x678*000

?>

Разделители заменяются пользовательскими, все остальные правила сохраняются.

Php формат числа

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

Источник

ruud.ru


You May Also Like

About the Author: admind

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Adblock
detector