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

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

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

Код: plaintext
lnMax =  99999999999999990000 

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

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

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

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

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

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


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