Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Общие вопросы > Floating point overflow в 64-bit OC |
Автор: dmitry8 16.1.2024, 09:27 | ||||
Добрый день! Пишу на Delphi 11 64-bit для Android 64-bit.
При выполнении этой команды возникает ошибка: “Floating point overflow.” Устраняющая ошибку директива:
не устраивает, так как при её использовании получается x = 0 (но это не так). Мне нужно, чтобы это выполнялось без SetExceptionMask (как в 32-битной ОС). Перерыл русско- и англоязычный интернет, но не нашёл решение. Как пофиксить? |
Автор: Oldshelf 16.1.2024, 11:35 | ||
А возведение в положительную степень работает?
|
Автор: dmitry8 16.1.2024, 11:49 | ||||
Проверил, возникает та же самая ошибка: "Floating point overflow" |
Автор: Oldshelf 16.1.2024, 13:01 |
А что получается с маской исключений? |
Автор: dmitry8 16.1.2024, 13:31 | ||
При использовании маски исключений во втором случае получается: x = INF В 32-битных системах (без использования маски исключений): x = 2.2250738585072E-308 ( где x:= power(2,-1022)) x = 4.49423283715579E307 (где x:= power(2,1022)) |
Автор: Oldshelf 16.1.2024, 14:03 |
INF - означает, что значение больше допустимого. Вроде, есть исправление этой недоработки: https://blog.synopse.info/?post/2011/09/13/Using-Extended-in-Delphi-XE2-64-bit https://blog.grijjy.com/2021/05/05/high-precision/ |
Автор: Seenkao 9.2.2024, 00:58 |
1. Попробуйте отключить флаги переполнения при отладке. 2. Попробуйте режим Release (там должны быть уже отключены эти флаги). |