- Format Number to 2 Decimal Places in PHP
- Using the number_format() function
- Use sprintf() function
- Use the floatval and number_format function
- floatval
- Список параметров
- Возвращаемые значения
- Список изменений
- Примеры
- Смотрите также
- User Contributed Notes 23 notes
- floatval
- Return Values
- Examples
- See Also
- Форматировать число до двух знаков после запятой в PHP
- 1. Использование number_format() функция
- 2. Использование sprintf() функция
- 3. Использование round() функция
- 4. Использование bcadd() функция
Format Number to 2 Decimal Places in PHP
To format a number to 2 decimal places in PHP, you can use the round() function and pass the number and 2 as arguments to the round() function.
Here is an example of how to use the round() function to format a number to 2 decimal places:
round() function accepts a number and the number of decimal places to round to as arguments, and it returns the rounded number as a float.
Using the number_format() function
To format a number to 2 decimal places in PHP, you can use the number_format() function. number_format() formats number with specified decimal places.
Here is an example of how to use the number_format function to format a number to 2 decimal places:
We used number_format() to format number to 2 decimal places in PHP.
- the number to format,
- the number of decimal places to include, and
- the decimal point character to use.
- thousand separator which is not applicable here.
Use sprintf() function
To format a number to 2 decimal places in PHP, you can also use the sprintf() function and use the format string «%0.2f» .
Here is an example of how to use the sprintf function to format a number to 2 decimal places:
sprintf() function accepts a format string as its first argument, and it formats the numbers that are passed as subsequent arguments according to the specified format.
Use the floatval and number_format function
To format a number to 2 decimal places in PHP, you can also use the number_format() function in combination with the floatval() function.
You can first convert the number to a string using the floatval() function, and then use the number_format() function to format the string to 2 decimal places.
Here is an example of how to use the floatval() and number_format() functions to format a number to 2 decimal places:
floatval
Возвращает значение переменной value в виде числа с плавающей точкой ( float ).
Список параметров
Может быть любого скалярного типа. floatval() нельзя использовать с объектами, в этом случае возникнет ошибка уровня E_WARNING и функция вернёт 1.
Возвращаемые значения
Значение заданной переменной в виде числа с плавающей точкой. Пустые массивы в качестве аргумента возвращают 0, непустые массивы возвращают 1.
Строки чаще всего возвращают 0, тем не менее результат зависит от самых левых символов строки. Применяются правила приведения к float.
Список изменений
Версия | Описание |
---|---|
8.0.0 | Уровень ошибки при преобразовании из объекта был изменён с E_NOTICE на E_WARNING . |
Примеры
Пример #1 Пример использования floatval()
$var = ‘122.34343The’ ;
$float_value_of_var = floatval ( $var );
echo $float_value_of_var ; // 122.34343
?>?php
Пример #2 Пример использования floatval() с нечисловыми крайними левыми символами
Смотрите также
- boolval() — Возвращает логическое значение переменной
- intval() — Возвращает целое значение переменной
- strval() — Возвращает строковое значение переменной
- settype() — Задаёт тип переменной
- Манипуляции с типами
User Contributed Notes 23 notes
This function takes the last comma or dot (if any) to make a clean float, ignoring thousand separator, currency or any other letter :
if (!$sep) return floatval(preg_replace(«/[^0-9]/», «», $num));
>
return floatval(
preg_replace(«/[^0-9]/», «», substr($num, 0, $sep)) . ‘.’ .
preg_replace(«/[^0-9]/», «», substr($num, $sep+1, strlen($num)))
);
>
$num = ‘1.999,369€’;
var_dump(tofloat($num)); // float(1999.369)
$otherNum = ‘126,564,789.33 m²’;
var_dump(tofloat($otherNum)); // float(126564789.33)
you can also use typecasting instead of functions:
There is much easier way to deal with formatted numbers:
$str = ‘13,232.95’ ;
$var = (double) filter_var ( $str , FILTER_SANITIZE_NUMBER_FLOAT , FILTER_FLAG_ALLOW_FRACTION );
var_dump ( $var );
?>
double(13232.95)
To view the very large and very small numbers (eg from a database DECIMAL), without displaying scientific notation, or leading zeros.
FR : Pour afficher les très grand et très petits nombres (ex. depuis une base de données DECIMAL), sans afficher la notation scientifique, ni les zéros non significatifs.
function floattostr ( $val )
preg_match ( «#^([\+\-]|)(7*)(\.(7*?)|)(0*)$#» , trim ( $val ), $o );
return $o [ 1 ]. sprintf ( ‘%d’ , $o [ 2 ]).( $o [ 3 ]!= ‘.’ ? $o [ 3 ]: » );
>
?>
echo floattostr ( «0000000000000001» );
echo floattostr ( «1.00000000000000» );
echo floattostr ( «0.00000000001000» );
echo floattostr ( «0000.00010000000» );
echo floattostr ( «000000010000000000.00000000000010000000000» );
echo floattostr ( «-0000000000000.1» );
echo floattostr ( «-00000001.100000» );
// result
// 1
// 1
// 0.00000000001
// 0.0001
// 10000000000.0000000000001
// -0.1
// -1.1
Easier-to-grasp-function for the ‘,’ problem.
function Getfloat ( $str ) <
if( strstr ( $str , «,» )) <
$str = str_replace ( «.» , «» , $str ); // replace dots (thousand seps) with blancs
$str = str_replace ( «,» , «.» , $str ); // replace ‘,’ with ‘.’
>
if( preg_match ( «#([0-9\.]+)#» , $str , $match )) < // search for number that may contain '.'
return floatval ( $match [ 0 ]);
> else <
return floatval ( $str ); // take some last chances with floatval
>
>
echo Getfloat ( «$ 19.332,35-» ); // will print: 19332.35
?>
function ParseFloat ( $floatString ) <
$LocaleInfo = localeconv ();
$floatString = str_replace ( $LocaleInfo [ «mon_thousands_sep» ] , «» , $floatString );
$floatString = str_replace ( $LocaleInfo [ «mon_decimal_point» ] , «.» , $floatString );
return floatval ( $floatString );
>
?>
setlocale() and floatval() duo could break your DB queries in a very simple way:
setlocale ( LC_ALL , ‘bg_BG’ , ‘bgr_BGR’ );
echo floatval ( 0.15 ); // output 0,15
?>
You would need simple workaround like:
function number2db ( $value )
$larr = localeconv ();
$search = array(
$larr [ ‘decimal_point’ ],
$larr [ ‘mon_decimal_point’ ],
$larr [ ‘thousands_sep’ ],
$larr [ ‘mon_thousands_sep’ ],
$larr [ ‘currency_symbol’ ],
$larr [ ‘int_curr_symbol’ ]
);
$replace = array( ‘.’ , ‘.’ , » , » , » , » );
return str_replace ( $search , $replace , $value );
>
setlocale ( LC_ALL , ‘bg_BG’ , ‘bgr_BGR’ );
$testVal = floatval ( 0.15 ); // result 0,15
var_dump ( $testVal , number2db ( $testVal ));
Most of the functions listed here that deal with $ and , are unnecessarily complicated. You can use ereg_replace() to strip out ALL of the characters that will cause floatval to fail in one simple line of code:
The last getFloat() function is not completely correct.
1.000.000 and 1,000,000 and its negative variants are not correctly parsed. For the sake of comparing and to make myself clear I use the name parseFloat in stead of getFloat for the new function:
function parseFloat ( $ptString ) <
if ( strlen ( $ptString ) == 0 ) <
return false ;
>
$pString = str_replace ( » » , «» , $ptString );
if ( substr_count ( $pString , «,» ) > 1 )
$pString = str_replace ( «,» , «» , $pString );
if ( substr_count ( $pString , «.» ) > 1 )
$pString = str_replace ( «.» , «» , $pString );
$commaset = strpos ( $pString , ‘,’ );
if ( $commaset === false )
$pointset = strpos ( $pString , ‘.’ );
if ( $pointset === false )
$pregResultA = array();
$pregResultB = array();
function testFloatParsing () <
$floatvals = array(
«22 000,76» ,
«22.000,76» ,
«22,000.76» ,
«22 000» ,
«22,000» ,
«22.000» ,
«22000.76» ,
«22000,76» ,
«1.022.000,76» ,
«1,022,000.76» ,
«1,000,000» ,
«1.000.000» ,
«1022000.76» ,
«1022000,76» ,
«1022000» ,
«0.76» ,
«0,76» ,
«0.00» ,
«0,00» ,
«1.00» ,
«1,00» ,
«-22 000,76» ,
«-22.000,76» ,
«-22,000.76» ,
«-22 000» ,
«-22,000» ,
«-22.000» ,
«-22000.76» ,
«-22000,76» ,
«-1.022.000,76» ,
«-1,022,000.76» ,
«-1,000,000» ,
«-1.000.000» ,
«-1022000.76» ,
«-1022000,76» ,
«-1022000» ,
«-0.76» ,
«-0,76» ,
«-0.00» ,
«-0,00» ,
«-1.00» ,
«-1,00»
);
Use this snippet to extract any float out of a string. You can choose how a single dot is treated with the (bool) ‘single_dot_as_decimal’ directive.
This function should be able to cover almost all floats that appear in an european environment.
function float ( $str , $set = FALSE )
<
if( preg_match ( «/([0-9\.,-]+)/» , $str , $match ))
// Found number in $str, so set $str that number
$str = $match [ 0 ];
if( strstr ( $str , ‘,’ ))
// A comma exists, that makes it easy, cos we assume it separates the decimal part.
$str = str_replace ( ‘.’ , » , $str ); // Erase thousand seps
$str = str_replace ( ‘,’ , ‘.’ , $str ); // Convert , to . for floatval command
>
else
// Else, treat all dots as thousand seps
$str = str_replace ( ‘.’ , » , $str ); // Erase thousand seps
return floatval ( $str );
>
>
>
else
// No number found, return zero
return 0 ;
>
>
echo float ( ‘foo 123,00 bar’ ); // returns 123.00
echo float ( ‘foo 123.00 bar’ array( ‘single_dot_as_decimal’ => TRUE )); //returns 123.000
echo float ( ‘foo 123.00 bar’ array( ‘single_dot_as_decimal’ => FALSE )); //returns 123000
echo float ( ‘foo 222.123.00 bar’ array( ‘single_dot_as_decimal’ => TRUE )); //returns 222123000
echo float ( ‘foo 222.123.00 bar’ array( ‘single_dot_as_decimal’ => FALSE )); //returns 222123000
// The decimal part can also consist of ‘-‘
echo float ( ‘foo 123,— bar’ ); // returns 123.00
floatval
Может быть любой скалярный тип. floatval () не следует использовать для объектов, так как это вызовет E_NOTICE уровня E_NOTICE и вернет 1.
Return Values
Значение плавающей запятой данной переменной.Пустые массивы возвращают 0,непустые массивы-1.
Строки, скорее всего, вернут 0, хотя это зависит от крайних левых символов строки. Применяются общие правила литья поплавков .
Examples
Пример # 1 floatval () Пример
$var = '122.34343The'; $float_value_of_var = floatval($var); echo $float_value_of_var; // 122.34343 ?>
Пример # 2 Нечисловые крайние левые символы floatval () Пример
$var = 'The122.34343'; $float_value_of_var = floatval($var); echo $float_value_of_var; // 0 ?>
See Also
- boolval () — получает логическое значение переменной
- intval () — получает целочисленное значение переменной
- strval () — Получить строковое значение переменной
- settype () — Устанавливает тип переменной
- Type juggling
PHP 8.2
(PHP 5.3.0,7,8,PECL fileinfo 0.1.0)finfo_open finfo::__construct Создание нового экземпляра Процедурный стиль Объектно-ориентированный стиль (конструктор):Эта функция
(PHP 5.3.0,7,8,PECL fileinfo 0.1.0)finfo_set_flags finfo::set_flags libmagic параметры конфигурации Процедурный стиль Объектно-ориентированный стиль Эта функция
(PHP 4,5,7,8)flock Портативная рекомендательная блокировка файлов flock()позволяет выполнять простую модель читателя/писателя,которая может быть использована практически на любой платформе
(PHP 4,5,7,8)floor Округление дробей вниз Возвращает следующее наименьшее целочисленное значение (как float),при необходимости округляя num в меньшую сторону.
Форматировать число до двух знаков после запятой в PHP
В этой статье показано, как отформатировать число до двух знаков после запятой в PHP.
1. Использование number_format() функция
Вы можете использовать number_format() Функция для форматирования числа до нужного количества цифр после запятой. Он принимает четыре параметра: форматируемое число, количество устанавливаемых десятичных цифр, десятичный разделитель и разделитель тысяч в указанном порядке. Это работает, но возвращает отформатированную строку, а не число. Если вам нужно значение с плавающей запятой вместо строки, вы можете передать возвращенную строку в floatval() функция.
2. Использование sprintf() функция
В качестве альтернативы вы можете использовать sprintf() Функция для форматирования числа. Он создает строку в соответствии с указанной строкой форматирования. Вы можете отформатировать число до двух знаков после запятой, используя %.2f модификатор. Следующий пример кода демонстрирует:
3. Использование round() функция
Если вам нужно округлить значение до заданной точности после запятой, вы можете использовать round() функция. Следующий пример иллюстрирует его использование. Обратите внимание, что round() функция не добавляет нули в конце числа, чтобы соответствовать требуемым цифрам после запятой.
Режим округления по умолчанию round() является PHP_ROUND_HALF_UP который округляет число от нуля, когда оно находится на полпути. Есть несколько других констант, которые указывают режим, в котором происходит округление. Эти режимы PHP_ROUND_HALF_DOWN , PHP_ROUND_HALF_EVEN , а также PHP_ROUND_HALF_ODD , которые округляют указанное число до нуля, ближайшего четного значения и ближайшего нечетного значения соответственно.
4. Использование bcadd() функция
Наконец, вы можете использовать математическую функцию BC. bcadd() , который может складывать два своих операнда по заданному масштабу, указывая количество знаков после запятой в результате. Чтобы отформатировать число до двух знаков после запятой, вы можете использовать это число в качестве первого операнда и 0 в качестве второго операнда и указать масштаб 2. Следующий код демонстрирует: