It's not explicitly documented; number_format also rounds:
<?php
$numbers = array(0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009);
foreach ($numbers as $number)
print $number."->".number_format($number, 2, '.', ',')."<br>";
?>
0.001->0.00
0.002->0.00
0.003->0.00
0.004->0.00
0.005->0.01
0.006->0.01
0.007->0.01
0.008->0.01
0.009->0.01number_format
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
number_format
Референца за `function.number-format.php` со подобрена типографија и навигација.
number_format
(PHP 4, PHP 5, PHP 7, PHP 8)
number_format — Форматирај број со групирани илјади
= NULL
float
$num,int
$decimals = 0,?string
$decimal_separator = ".",?string
$thousands_separator = ","): string
Ги форматира броевите со групирани илјади и опционално децимални цифри користејќи го правилото за заокружување половина нагоре.
Параметри
num-
Бројот што се форматира.
decimals-
Поставува број на децимални цифри. Ако
0симболот, на пр.decimal_separatorсе изостави од вратената вредност. Од PHP 8.3.0, кога вредноста е негативна,numсе заокружува наdecimalsзначајни цифри пред децималната точка. Пред PHP 8.3.0, негативните вредности беа игнорирани и третирани исто како0. decimal_separator-
Поставува сепаратор за децималната точка.
thousands_separator-
Поставува сепаратор за илјади.
Вратени вредности
Форматирана верзија на num.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.3.0 |
Додадено ракување со негативни вредности за decimals.
|
| 8.0.0 | Пред оваа верзија, number_format() прифаќаше еден, два или четири параметри (но не три). |
| 7.2.0 |
number_format() беше променет така што не може да врати
-0, претходно -0 можеше да се врати за случаи како каде num ќе биде -0.01.
|
Примери
Пример #1 number_format() Пример
На пример, француската нотација обично користи две децимали, запирка (',') како децимален сепаратор и празно место (' ') како илјаден сепаратор. Следниот пример покажува различни начини за форматирање на број:
<?php
$number = 1234.56;
// english notation (default)
echo number_format($number), PHP_EOL;
// 1,235
// French notation
echo number_format($number, 2, ',', ' '), PHP_EOL;
// 1 234,56
$number = 1234.5678;
// english notation without thousands separator
echo number_format($number, 2, '.', ''), PHP_EOL;
// 1234.57
?>Пример #2 Негативна вредност за decimals
Од PHP 8.3.0, негативна вредност за decimals
се користи за заокружување на бројот на значајни цифри пред децималната точка.
<?php
$number = "1234.5678";
var_dump(number_format($number, -1));
var_dump(number_format($number, -2));
var_dump(number_format($number, -3));
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
string(5) "1,230" string(5) "1,200" string(5) "1,000"
Види Исто така
- money_format() - Форматира број како валутна низа
- sprintf() - Врати форматирана низа
- printf() Излез на стринг
- sscanf() - Парсирај влез од низа според формат
Белешки од корисници Управување со PDO конекции
Outputs a human readable number.
<?php
# Output easy-to-read numbers
# by james at bandit.co.nz
function bd_nice_number($n) {
// first strip any formatting;
$n = (0+str_replace(",","",$n));
// is this a number?
if(!is_numeric($n)) return false;
// now filter it;
if($n>1000000000000) return round(($n/1000000000000),1).' trillion';
else if($n>1000000000) return round(($n/1000000000),1).' billion';
else if($n>1000000) return round(($n/1000000),1).' million';
else if($n>1000) return round(($n/1000),1).' thousand';
return number_format($n);
}
?>
Outputs:
247,704,360 -> 247.7 million
866,965,260,000 -> 867 billionNote: use NumberFormatter to convert in human-readable format instead user function from comments:
<?php
echo NumberFormatter::create('en', NumberFormatter::SPELLOUT)->format(12309); // twelve thousand three hundred nine
echo NumberFormatter::create('ru', NumberFormatter::SPELLOUT)->format(12307.5); // двенадцать тысяч триста семь целых пять десятых
?>If you want to display a number ending with ,- (like 200,-) when there are no decimal characters and display the decimals when there are decimal characters i use:
function DisplayDouble($value)
{
list($whole, $decimals) = split ('[.,]', $value, 2);
if (intval($decimals) > 0)
return number_format($value,2,".",",");
else
return number_format($value,0,".",",") .",-";
}formatting numbers may be more easy if u use number_format function.
I also wrote this :
function something($number)
{
$locale = localeconv();
return number_format($number,
$locale['frac_digits'],
$locale['decimal_point'],
$locale['thousands_sep']);
}
hope this helps =)
[]'sFor Zero fill - just use the sprintf() function
$pr_id = 1;
$pr_id = sprintf("%03d", $pr_id);
echo $pr_id;
//outputs 001
-----------------
$pr_id = 10;
$pr_id = sprintf("%03d", $pr_id);
echo $pr_id;
//outputs 010
-----------------
You can change %03d to %04d, etc.I ran across an issue where I wanted to keep the entered precision of a real value, without arbitrarily rounding off what the user had submitted.
I figured it out with a quick explode on the number before formatting. I could then format either side of the decimal.
<?php
function number_format_unlimited_precision($number,$decimal = '.')
{
$broken_number = explode($decimal,$number);
return number_format($broken_number[0]).$decimal.$broken_number[1];
}
?>