powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / numeric overlow как обойдти
6 сообщений из 6, страница 1 из 1
numeric overlow как обойдти
    #35889631
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые форумляне, всем доброе время суток.
Есть такая проблемма - данные размерностью более 20 знаков. На сервере происходит разложение числа в виде правильной дроби(выделяется целая часть и числитель), но помимо этого данные должны быть в виде неправильной дроби. Данные заполняются в цикле и при переполнении выходит ошибка numeric overlow и цикл соответсвенно встает, нужно нажать Ignore. Можно это как-то подавить, чтобы цикл отработал до окончания и не приходилось нажимать кнопки???

Заранее благодарен.
...
Рейтинг: 0 / 0
numeric overlow как обойдти
    #35889638
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RTFM по TRY...CATCH...FINALLY
...
Рейтинг: 0 / 0
numeric overlow как обойдти
    #35889696
AK-Shah
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Автор не указал версию Фокса, возможно придется отлавливать обработчиком ошибку 39.
...
Рейтинг: 0 / 0
numeric overlow как обойдти
    #35889970
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AK-ShahАвтор не указал версию Фокса, возможно придется отлавливать обработчиком ошибку 39.
По умолчанию считаем последней ;)
Но если это неееее так то перехватывать ошибку через глобальную настройку ON ERROR и в ней уже обрабатывать свое особое состояние...
Хотя из Фокса numeric overlow удавалось получить кране редко
...
Рейтинг: 0 / 0
numeric overlow как обойдти
    #35890310
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версия 6,0 - что есть на том и работаем.
...
Рейтинг: 0 / 0
numeric overlow как обойдти
    #35890540
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А нельзя перед потенциально опасной операцией просто проверить вероятность переполнения?

Т.е. ты значешь максимально возможное значение

Код: plaintext
lnMax =  99999999999999990000 

Точность вычисления FoxPro 16 значащих цифр, поэтому, все что больше - это случайные данные

Ты знаешь предыдущее значение полученное на предыдущем шаге цикла, значит, можешь определить разницу

Код: plaintext
1.
2.
lnPrevValue =  99999999999999990000 
lnDelta = lnMax - lnPrevValue

Соответственно, если очередное слагаемое больше этой разницы, то пропускаешь этот шаг или прерываешь цикл.

Хотя, с практической точки зрения, прерывать обработку надо при достижении 16 значащих цифр, поскольку все, что больше уже имеет приблизительное значение. Тогда контроль будет еще проще

Код: plaintext
1.
2.
3.
IF lnNextValue > 1E16
	* Дальнейший расчет смысла не имеет, поскольку будет не точен
ENDIF
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / numeric overlow как обойдти
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]