Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как получить дробную часть в качестве целого числа 
:(
    Опции темы
Xellz
Дата 22.1.2008, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Как можно разделить число с запятой на два целых числа. Т.е. к примеру из 4.234567 получить два int значения с 4 и 234567. Дробную часть при необходимости округлить до нужного кол-ва знаков после запятой.

Что-то нормального решения пока не получилось найти.
PM MAIL   Вверх
GeneralElectric
Дата 23.1.2008, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



А ненормальное? =)
Решение, мне кажется, любое подойдет. Хочешь - строковыми функциями делай, хочешь - математическими. 
PM MAIL   Вверх
source777
Дата 23.1.2008, 00:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Код

$val = 4.234567;
$n = 4; // число учитываемых знаков после запятой
$res = round(($val-intval($val))*pow(10,$n));
print $res;


Добавлено через 1 минуту и 44 секунды
Если округлять не надо, то ещё проще:
Код

print substr($val, strpos($val, \'.\')+1);



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
smartov
Дата 23.1.2008, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Xellz
Код

$number = 4.234567;
list($first, $second) = split('.', (string)$number);

PM MAIL   Вверх
Xellz
Дата 23.1.2008, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 4.5.2006

Репутация: нет
Всего: нет



Спасибо, видимо слишком много хотел smile

Вариант с разделением строки на две и потом переводм в int, но думал что это не правильный способ.. хотя работает
PM MAIL   Вверх
source777
Дата 23.1.2008, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1878
Регистрация: 12.3.2007

Репутация: 2
Всего: 56



Цитата(Xellz @  23.1.2008,  00:30 Найти цитируемый пост)
но думал что это не правильный способ..
Определения понятий \"правильный способ\", \"неправильный способ\" в студию!



--------------------
Если бы программистам платили за то, чтобы убирать код из программы вместо того, чтобы добавлять его, программы были бы намного лучше © Николас Негропонте
PM MAIL   Вверх
smartov
Дата 23.1.2008, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Цитата(source777 @  22.1.2008,  23:34 Найти цитируемый пост)
Определения понятий \"правильный способ\", \"неправильный способ\" в студию!

Правильный - более оптимальный
Неправильный - менее оптимальный

"Я так думаю"  smile  (С) Мимино
PM MAIL   Вверх
SelenIT
Дата 23.1.2008, 01:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 32
Всего: 401



Странная какая-то задача. Зачем целая часть, понятно, но зачем нужна дробная часть в виде целого? А как быть, если она не уместится в отведенные под целое 10-11 цифр? А что делать с записями вида 1.2e3? Чует моя интуиция, что конечная цель, как водится, достигается куда проще и без таких выкрутасов...


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Sorbing
  Дата 28.9.2010, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 25.3.2007

Репутация: нет
Всего: нет



Цитата(smartov @ 23.1.2008,  00:16)
Xellz
Код

$number = 4.234567;
list($first, $second) = split('.', (string)$number);


Один момент... не забываем экранировать спец символы. 
Первый аргумент ф-ции split() - это регулярка, а точка заменяет любой символ.
Правильно будет так:
Код

$number = 4.234567;
list($first, $second) = split('\.', (string)$number);


Также информация по работе с дробными числами есть на сайте Заметки PHP программиста
Статья Дроби в PHP

Это сообщение отредактировал(а) Sorbing - 28.9.2010, 17:18
PM MAIL   Вверх
smartov
Дата 28.9.2010, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 7
Всего: 259



Sorbing
Во-первых у меня нет привычки писать код, не проверяя. Если я не проверяю, то пишу об этом дополнительно. Да, я знаю что первый аргумент split - регулярка. Но в этом данном случае split прекрасно понимает, что программист от него хочет и отрабатывает верно.

Во-вторых некропостинг в старые изжившие себя темы - плохая практика. На фоне последних двух ссылок выглядит вообще как реклама. Если б я не видел что вы зарегистрированы очень давно, подумал бы что сео-спам.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0889 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.