Php последние две цифры

number_format

Formats a number with grouped thousands and optionally decimal digits using the rounding half up rule.

Parameters

The number being formatted.

Sets the number of decimal digits. If 0 , the decimal_separator is omitted from the return value.

Sets the separator for the decimal point.

Sets the thousands separator.

Return Values

A formatted version of num .

Changelog

Version Description
8.0.0 Prior to this version, number_format() accepted one, two, or four parameters (but not three).
7.2.0 number_format() was changed to not being able to return -0 , previously -0 could be returned for cases like where num would be -0.01 .

Examples

Example #1 number_format() Example

For instance, French notation usually use two decimals, comma (‘,’) as decimal separator, and space (‘ ‘) as thousand separator. The following example demonstrates various ways to format a number:

// english notation (default)
$english_format_number = number_format ( $number );
// 1,235

// French notation
$nombre_format_francais = number_format ( $number , 2 , ‘,’ , ‘ ‘ );
// 1 234,56

// english notation without thousands separator
$english_format_number = number_format ( $number , 2 , ‘.’ , » );
// 1234.57

See Also

  • money_format() — Formats a number as a currency string
  • sprintf() — Return a formatted string
  • printf() — Output a formatted string
  • sscanf() — Parses input from a string according to a format

User Contributed Notes 9 notes

It’s not explicitly documented; number_format also rounds:

$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 , ‘.’ , ‘,’ ). «
» ;
?>

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.01

Note: use NumberFormatter to convert in human-readable format instead user function from comments:
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,».»,»,») .»,-«;
>

Outputs a human readable number.

# 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 billion

For Zero fill — just use the sprintf() function

$pr_id = 1;
$pr_id = sprintf(«%03d», $pr_id);
echo $pr_id;

$pr_id = 10;
$pr_id = sprintf(«%03d», $pr_id);
echo $pr_id;

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.

function number_format_unlimited_precision ( $number , $decimal = ‘.’ )
$broken_number = explode ( $decimal , $number );
return number_format ( $broken_number [ 0 ]). $decimal . $broken_number [ 1 ];
>
?>

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’]);
>

My simpler solution to the problem of the decimal number in this function being longer than the specified number of decimals.

Standard result for number_format() is..
number_format(5.00098, 2) = 5.00

My function will return the result = 5.001

// ** Warning: Does not work with scientific notation. Conversion to a real number is required. **

echo auto_decimal_format ( 5.0005620 ); // print 5.0006
echo auto_decimal_format ( 5.0009820 ); // print 5.001
echo auto_decimal_format ( 5.00098 , 8 ); // print 5.00098000
echo auto_decimal_format ( 1.0295691366783E-5 , 2 ); // print 0.00

function auto_decimal_format ( $n , $def = 2 ) $a = explode ( «.» , $n );
if ( count ( $a )> 1 ) $b = str_split ( $a [ 1 ]);
$pos = 1 ;
foreach ( $b as $value ) if ( $value != 0 && $pos >= $def ) $c = number_format ( $n , $pos );
$c_len = strlen ( substr ( strrchr ( $c , «.» ), 1 ));
if ( $c_len > $def ) < return rtrim ( $c , 0 ); >
return $c ; // or break
>
$pos ++;
>
>
return number_format ( $n , $def );
>

To prevent the rounding that occurs when next digit after last significant decimal is 5 (mentioned by several people below):

function fnumber_format ( $number , $decimals = » , $sep1 = » , $sep2 = » )

if (( $number * pow ( 10 , $decimals + 1 ) % 10 ) == 5 ) //if next not significant digit is 5
$number -= pow ( 10 , -( $decimals + 1 ));

return number_format ( $number , $decimals , $sep1 , $sep2 );

$t = 7.15 ;
echo $t . » | » . number_format ( $t , 1 , ‘.’ , ‘,’ ) . » | » . fnumber_format ( $t , 1 , ‘.’ , ‘,’ ) . «\n\n» ;
//result is: 7.15 | 7.2 | 7.1

$t = 7.3215 ;
echo $t . » | » . number_format ( $t , 3 , ‘.’ , ‘,’ ) . » | » . fnumber_format ( $t , 3 , ‘.’ , ‘,’ ) . «\n\n» ;
//result is: 7.3215 | 7.322 | 7.321
> ?>

have fun!

Источник

Вернуть последние 2 цифры числа

Но, учитывая тот факт, что вы здесь разбираете дату, было бы разумнее использовать функцию даты. p.e. strtotime() и date() или даже:

format('Y'); // prints "2012" .. (see date formats) 

Для чисел вы можете использовать функцию php по модулю (http://php.net/manual /en/internals2.opcodes.mod.php):

departureDate->year; echo $year % 100; ?> 

Вы можете использовать простую аритиметическую операцию, например эту .

Может быть решение получше, но это подойдет

Пример 1. Вы можете просто разделить теги с помощью strip_tags и использовать substr

$number = '200912' ; $year = substr(strip_tags($number), 0,2); var_dump($year); 

Пример 2: Вы также можете использовать simplexml_load_string с substr

$number = '200912' ; $year = substr(simplexml_load_string($number),0,2); var_dump($year); 

Преобразовать его в строку. затем возьмите первые два элемента.

В java это можно сделать с помощью следующего кода. Пусть переменная представляет собой целое число с именем x. тогда вы можете использовать

byte[] array= Integer.toString(x).get.bytes(). 

Теперь array [0] и array [1] — это первые две цифры. array [array.length-1] и array [array.length] — последние два.

В java вы можете сделать это, следуя коду. Пусть переменная является целым числом с именем x . тогда вы можете использовать byte[] array= Integer.toString(x).get.bytes(). Теперь массив [0] и массив [1] — это первые две цифры.

Я думаю, что не имеет значения, используете ли вы java или php. Идея – это главное. вы можете легко найти эквивалентные функции php в Интернете. Вот почему .

Вы можете просто указать его как строку, функция substr преобразует его автоматически:

departureDate->year; echo substr( $year, -2 ); ?> 

Внимательно изучите функцию substr. Если вы хотите, чтобы результат был строгим целым числом, просто добавьте (int) перед возвращением.

Но, как сказал январь, вам лучше работать с ним как с датой:

departureDate->year; $date = DateTime::createFromFormat( 'dmy', $year ); echo date( "y", $date->getTimestamp() ); ?> 

Источник

Форум PHP программистов ► PHP практикум ► PHP для начинающих

Сообщений: 194
Пользователь №: 19799
На форуме:
Карма:

Допустим есть числа, 231, 2, 4, 431, 533

Мне нужно выводить в поле смотрел: 231 раз, 2 раз и.т.д
Чтобы не было 2 раз, нужно сделать 2 раза!

Тоесть должно выглядеть:
231 раз, 2 раза, 4 раза, 477 раз, 533 раза

Теоритически можно сделать если число оканчивается на 2,3 или 4 то подставлять «а», вот только как это сделать не знаю!
Помогите PLEASE!

Я бы обращался к числу как к строке, конкретнее как к массиву символов. И брал бы последний элемент массива.

web-monster
Глаза шире, и видим первый предложенный вариант. гораздо корректней, чем приводить к строке и т.д.

$последняяЦыфра = $чысло % 10;

$str=(string) 124314;
echo $str[strlen($str)-1];

Я из этой темы удалил кучу флуда, и в т.ч. свои сообщения. Потому что оказался втянут в какой-то бессмысленный спор «ни о чем».

Еще два велосипедиста. Чем вас чисто математическое решение не устраивает то? оно лучше во всех отношениях

glock18 — не велосипедисты, а рационализаторы И, к тому же, решение с остатком от деления мне больше нравится. Только я не успел его первым написать, когда тема появилась.
Но и со строкой тоже вполне приемлимо Именно когда просто отрезаем последнюю цифру.

Зададим переменной «a» любое число, разделим на 10 и получившееся значение разделится на целую и десятичную часть. С помощью explode разделим обе части в разные элементы массива и если вторая (правая часть числа) оканчивается на 2 или 3, то переменная «c» будет иметь значение «раза» если же нет, то «раз».
Выведим переменные а и с.

$a=231;
$b=$a/10;

$element=explode(«.», $b);
if($element[1]==2 or $element[1]==3 or $element[1]==4)$c=» раза»;>
else $c=» раз»;>
echo $a.$c;

ak167 — скрипт твой
1. Неоптимальный
2. Неверный

Легко заменяется на давным-давно озвученный в этой теме

2. Возьми $a=12 или $a=13 и посмотри, что получишь на выходе.


if($kolvo_prosmotrov_you=="12"||$kolvo_prosmotrov_you=="13"||$kolvo_prosmotrov_you=="14")

$a="раз";
>
else


$kolvo_vsego_count = $kolvo_prosmotrov_you % 10;

if($kolvo_vsego_count=="2"||$kolvo_vsego_count=="3"||$kolvo_vsego_count=="4")

$a="раза";
>
else

$a="раз";
>
>

Только вот интересно, а если нужно будет подставлять не только к одному значению $kolvo_prosmotrov_you, а ещё к 4 например.

Как тогда быть, не писать же 4 раза такую кучу кода

А вот для этого и существует такое понятие, как функция, написанная пользователем.

И еще. Возьми число 112 — что получишь?

Источник

Как я могу отделить число и получить первые две цифры в PHP?

Как я могу отделить число и получить первые две цифры в PHP?

Например: 1345 -> Мне нужен этот вывод => 13 или 1542 Я хочу 15 .

одной из возможностей было бы использовать substr :

РЕДАКТИРОВАТЬ:
пожалуйста, не то, что, как сказал Хакре , это сломается для отрицательных чисел или небольших чисел с десятичными знаками. его решение лучше, поскольку он делает некоторые проверки, чтобы избежать этого.

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

Проблемы, с которыми вы можете столкнуться здесь, – это диапазон целых чисел в PHP или проблемах округления, см. Integer Docs , INF .

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

$twoDigits = substr($number, 0, $number < 0 ? 3 : 2);

Не должно быть слишком сложно? Простая подстрока должна делать трюк (вы можете обрабатывать числа как строки на свободно типизированном языке, таком как PHP).

См. Справочную страницу PHP для функции substr() .

$output = substr($input, 0, 2); //get first two characters (digits) 

Вы можете получить строковое значение своего номера, а затем получить нужную часть с помощью substr .

Если вы не хотите использовать substr, вы можете разделить свой номер на 10, пока он не будет иметь 2 цифры:

дадут вам первые две цифры

Источник

Читайте также:  Javascript date get minute
Оцените статью