![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
Здрасти. Помогите пожалуйста найти в Делфи машинную бесконечность (т.е максимальное представимое число в типе single, double, extende), как найти это числа алгоритмически??
|
|||
|
||||
Fedia |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 465 Регистрация: 2.8.2006 Где: первым встречаю р ассвет Репутация: 8 Всего: 13 |
Из справки
const MaxDouble: Extended = 1.7e+308; const MaxSingle: Extended = 3.4e+38; const MaxExtended: Extended = 1.1e+4932;
Добавлять к переменной определенного типа значение в цикле, до тех пор пока не получишь ошибку, результат последней, успешно прошедшей операции сложения будет приближенно равным максимальному значение типа переменной. -------------------- Накануне решающей битвы Я иду, и надеждою зыбкой Озаряется эта дорога, Я мечтаю увидеть улыбку На лице победившего Бога… |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 53 Всего: 133 |
Фигасе алгоритм ![]() Для целочисленных типов можно использовать функции High и Low
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
EvilsInterrupt |
|
|||
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 3 Всего: 9 |
Poseidon, А че тебе алгоритм- то не нравится ? )))) Результат есть же! ;))))
|
|||
|
||||
Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
для этих типов код не заработает -------------------- Кольцов Виктор Владимирович |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
можно взять единицу и удвоить, затем полученное опять удвоить, и так до тех пор пока не возникнет исключение.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
PRF |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 13.10.2007 Репутация: нет Всего: нет |
я так и делал(увеличивал единицу), вот только Делфи не поддерживает переполнение типа (как например в с++) и тот код который работает на с++, не работате на Делфи. Пишет, что переполнение вещественного типа (floating pointer overflow) - вроде так.
|
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: нет Всего: 134 |
Это который? Операции типа 1.0/0.0? Вот тут говорят что 1.0 / 0.0 работает. Если не получится, то действтовать можно в лоб - посмотреть что записано в inf'е в с++, например так
и переписать эти байты в single'овую переменную в дельфи(как - не скажу). А вот тут
грят что в дельфи есть PositiveInfinity. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
DeadMage |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 17.4.2008 Репутация: нет Всего: нет |
Для целочисленных можно расчитать, умножить sizeof(integer), sizeof(cardinal), ... на то ли 16^2 то ли еще что-то, ну вы меня поняли...
![]() PS:а может так:16^sizeof(xxx)? |
|||
|
||||
ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 2 Всего: 12 |
Скорее так: 2^8 * SizeOf(xxxx) (/ 2 если со знаком) |
|||
|
||||
Esperito |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 2.9.2007 Репутация: 1 Всего: 3 |
Найти - в модуле Math.pas:
Алгоритмически - как описано в Math.pas, т.е. 1.0 / 0.0. Бесконечность по стандарту числа с плавающей точкой - это особый вид числа и, имхо, математическими операциями с числом с плавающей точкой его никак не получишь. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |