Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Переполнение

22K
06 ноября 2006 года
Lerd
3 / / 06.11.2006
Здравствуйте. Мне надо вывести квадрат числа А но вся ароблема в том что ето число может принимать максимальное значение типа Longint то есть 2 147 483 647, в следствии чего возникает переполнение. Я пробовал переводить ето число в строковой формат, т.е.
str(sqr(A),stroka),всё равно в строку заносится не правильный результат:mad: .
Как можно избежать переполнения?
3.7K
06 ноября 2006 года
Techtor
43 / / 12.09.2004
Во-первых, квадрат числа - всегда больше нуля. Поетому для сохранения квадрата можно использовать беззнаковой тип (unsigned long sqrt). При этом переманная sqrt может принимать только положительные значения, зато верхняя граница увеличитсья в два раза.
Во-вторых, для очень больших чисел можно использовать doube.
21K
07 ноября 2006 года
_kvo_
9 / / 02.11.2006
Попробуй использовать "длинную арифметику".
22K
07 ноября 2006 года
Lerd
3 / / 06.11.2006
[QUOTE=Techtor]Во-первых, квадрат числа - всегда больше нуля. Поетому для сохранения квадрата можно использовать беззнаковой тип (unsigned long sqrt). При этом переманная sqrt может принимать только положительные значения, зато верхняя граница увеличитсья в два раза.
Во-вторых, для очень больших чисел можно использовать doube.[/QUOTE]
Да, я согласен что здесь можно использовать Double, НО данная программа является функцией, при этом в основной прорамме мне необходим целый тип, а тип Double - вещественный и представляется в виде 1.000000Е+10, => при переходе из вещесвенного в целый тип теряется значение. Использование же unsigned long не даёт желаемого эффекта, так как при возведении числа 1000000000 мы получим число много большее максимального значения.;)
22K
07 ноября 2006 года
Lerd
3 / / 06.11.2006
[QUOTE=_kvo_]Попробуй использовать "длинную арифметику".[/QUOTE]
О,:) спасибо:). Кажись понял как решить:)
6.3K
08 ноября 2006 года
Neutral
76 / / 13.12.2005
А почему ты не можешь использовать числа с плавающей точкой? Обычно, если конечно это приемлимо используют extended, а если ты можешь писать задачу на Free Pascal'е то там все просто супер - int64. Если же применить вещественные числа нельзя, по каким то причинам, то выход один - длинная арифметика. Удачи!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог