Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2014, 12:48   #1
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию Из float в Integer число с плавающей точкой

Задача следующая, есть число 0,00455 (например) из этого числа нужно получить 455 в integer, или же 0,0000000455 результат должен быть аналогичным, думаю переводить это в строку, и перебирать каждый символ до тех пор пока не встречу индекс который имеет значение больше нуля, затем уже insert этого значения в integer, есть ли способ более изящный?
Winexcel вне форума Ответить с цитированием
Старый 06.07.2014, 13:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А откуда сие число?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.07.2014, 13:02   #3
Winexcel
Форумчанин
 
Регистрация: 26.08.2013
Сообщений: 187
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А откуда сие число?
Число взял из головы, число может быть любое, для наглядности дал.
Winexcel вне форума Ответить с цитированием
Старый 06.07.2014, 14:08   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
0,00455
Если там где-то в 12-ой позиции после запятой единичка будет, с ней как? Или 0,004549999999
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.07.2014, 14:31   #5
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Integer - до 2147483647 . То есть 10 значащих цифр.
А float - который из них ?
Double - это вроде до 15..16 значащих, Extended - до 20.
Вот это например
Код:
Edit1.Text:=FloatToStr(1-1e-14);
выдает 0.99999999999999
А число 99999999999999 в Integer не влезет.
type_Oleg вне форума Ответить с цитированием
Старый 06.07.2014, 14:54   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Дело не в том даже влезет или не влезет. В int64 влезет. В таком контексте можно только говорить о фиксированном количестве цифр после запятой, возможно с предварительным округлением до этого фиксированного количества цифр
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.07.2014, 08:29   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Дело не в том даже влезет или не влезет. В int64 влезет. В таком контексте можно только говорить о фиксированном количестве цифр после запятой, возможно с предварительным округлением до этого фиксированного количества цифр
категорически согласен. Готов подписаться под каждым словом.
Именно так.
Особенно если учесть неочевидные особенности вещественных чисел
Serge_Bliznykov вне форума Ответить с цитированием
Старый 07.07.2014, 12:23   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

1) Преобразуешь в строку
2) Удаляешь все нули
3) Преобразуешь строку в число.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 07.07.2014, 12:30   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от саша40 Посмотреть сообщение
1) Преобразуешь в строку
2) Удаляешь все нули
3) Преобразуешь строку в число.
другие посты почитайте.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 07.07.2014, 12:37   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Дело не в том даже влезет или не влезет. В int64 влезет. В таком контексте можно только говорить о фиксированном количестве цифр после запятой, возможно с предварительным округлением до этого фиксированного количества цифр
Ну и славно - пусть пихает в строку.
Цитата:
Особенно если учесть неочевидные особенности вещественных чисел
Наверно неочевидные особенности представления вещественных чисел.
Через строку идеальный вариант.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
действительное число с плавающей точкой, его модуль и квадрат (pascal ABC) программирование Помощь студентам 1 01.05.2013 22:15
Сложности с плавающей точкой Drozd-A Помощь студентам 3 13.10.2011 09:10
Числа с плавающей точкой [MI_nor] Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 11.04.2011 11:53
помогите с плавающей точкой Egory4 Помощь студентам 5 01.11.2009 14:48
Ошибка с плавающей точкой Vistar Паскаль, Turbo Pascal, PascalABC.NET 5 06.05.2009 19:47