Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Отделение последнего знака в числе


Автор: igramnet 28.7.2007, 14:40
Имеется переменная
$sum="916";

Как отделить в нём шестёрку?

Просто мне необходимо проверить заканчивается ли число на девятку.

Спасибо.

Автор: Anarki 29.7.2007, 15:28
Код

$sum="916";
$chislo = substr($sum, -1, 1);
echo $chislo;

Автор: Mal Hack 29.7.2007, 17:07
print $str[strlen($str)-1];

Автор: Fally 30.7.2007, 09:56
Код

$lastSym = ((int)$sum % 10);

Автор: Mal Hack 30.7.2007, 13:49
Fally, и что это даст?
А вот на такой строке попробуйте: "324523764532764264213213"

Автор: Fally 31.7.2007, 10:30
Цитата(Mal Hack @  30.7.2007,  13:49 Найти цитируемый пост)
Fally, и что это даст?
А вот на такой строке попробуйте: "324523764532764264213213" 

название темы видели? "Отделение последнего знака в числе" - вот оно... а зачем вы мне приводите в пример строку? (пусть даже строковое представление целого числа) а то что вы написали, числом не является для РНР, и дело даже не в том, что оно в кавычках, а в том, что превышает максимальное значение типа integer в РНР. А если вас в институте (или где там ещё учат) не учили операциям над целыми числами я не виноват, т.к. получение остатка от деления на 10 всегда даст последнюю цифру числа...

Автор: Glip 31.7.2007, 13:04
Fally,  а где сказано что integer?

Автор: Fally 31.7.2007, 13:30
Glip, в названии темы, сказано что "в числе", а слово число само по себе подразумевает тип integer (или на худой конец double, float. Но судя по контексту задачи все числа имеют при рпиведении из строки в число именно тип integer)... бесспорно число может храниться в строке, но если его числовое значение, превысит максимальное число в типе integer, как в примере Mal Hack'а то целым числом _это_ уже являться не будет, т.к. любая арифметическая операция будет приводить результат к типу double. Вот тест:
Код

<?php
$a = '634523472384385789347589375';
$b = '57843573897589327583758375892';
print($a + $b);
?>

Как результат:
Код

5.8478097369974E+028


Надеюсь разъснил свою точку зрения, касательного этого вопроса.

Автор: Mal Hack 31.7.2007, 19:51
Блин, Вы меня извините, но задолбали уже такие горе пхп-программисты, которые скорее всего не имели дело даже с Паскалем, про си не оворю, и не понимают того, что такое тип данных, диапазон значений и т.п.

Да, ПХП вам многое позволяет сделать, но это - НЕПРАВИЛЬНО, вот будете писать какую-ть систему по работе с деньгами, вам заказчик потом, голову, гланды и еще раз гланды оторвет, от того,что у вас числа черт знает какие получаются...

Посему, в любом случае, операция получения последнего числа, наиболее предпочтительна - СТРОКОВАЯ. 

PS:  если бы автор указал, что ему надо работать именно с integer, то был бв другое дело.

Автор: Flashdown 31.7.2007, 20:42
Посему, в любом случае, операция получения последнего числа, наиболее предпочтительна - СТРОКОВАЯ. 

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

Автор: Fally 1.8.2007, 09:22
Mal Hack, давайте не будем переходить на горе-не горе программистов... касательно паскаля и С(++) вы ошибаетесь очень сильно... Поверьте, писал не только системы по работе с деньгами, всё прекрасно работает и заказчик доволен. И как говорится "Не пытайся вытащить из чужого глаза сучок, когда в своём и бревна не видишь..." 


Flashdown, +1... хотя можно было бы назвать "получение последней цифры из числа в _строковом_ представлении"

Автор: Mal Hack 1.8.2007, 11:42
Fally, я вижу как вы в пхп плюете на числовые диапазоны и т.п. Так делать нельзя. 

Автор: Glip 1.8.2007, 12:03
Fally,  8.23 - тоже число
Цитата(Fally @  31.7.2007,  13:30 Найти цитируемый пост)
а слово число само по себе подразумевает тип integer

а вот из контекста судить вредно smile

Автор: Diesel Draft 1.8.2007, 12:25
ну я з вас не могу. Такой просто вопрос, но даже его вы умудрились растянуть

на мой взгляд самый верный вариант у Anarki

Код

$sum="916";
$chislo = substr($sum, -1, 1);
echo $chislo;

Автор: mishaSL 1.8.2007, 13:06

 ! 
mishaSL

Fally и Mal Hack не надо спорить на пустом месте. А тем более по поводу названия темы. Автор темы новичок и  в своем примере привел число в виде строки. Вобщем: решения найдены и не одно. Тема закрыта.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)