Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Floating point overflow в 64-bit OC, ошибка выхода значения из диапазона 
:(
    Опции темы
dmitry8
Дата 16.1.2024, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.2.2018

Репутация: нет
Всего: нет



Добрый день!

Пишу на Delphi 11 64-bit для Android 64-bit.
Код

var x: Extended80;
begin
  x:= power(2,-1022);
end;

При выполнении этой команды возникает ошибка:
“Floating point overflow.”

Устраняющая ошибку директива:
Код

SetExceptionMask([exInvalidOp, exDenormalized, exZeroDivide, exOverflow, exUnderflow, exPrecision]);

не устраивает, так как при её использовании получается x = 0 (но это не так).

Мне нужно, чтобы это выполнялось без SetExceptionMask (как в 32-битной ОС).
Перерыл русско- и англоязычный интернет, но не нашёл решение.
Как пофиксить?


Это сообщение отредактировал(а) dmitry8 - 16.1.2024, 10:39
PM MAIL   Вверх
Oldshelf
Дата 16.1.2024, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 22.4.2018

Репутация: 1
Всего: 4



А возведение в положительную степень работает?

Код

var x: Extended80;
begin
  x:= power(2,1022);
end;

PM MAIL WWW   Вверх
dmitry8
Дата 16.1.2024, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.2.2018

Репутация: нет
Всего: нет



Цитата(Oldshelf @ 16.1.2024,  11:35)
А возведение в положительную степень работает?

Код

var x: Extended80;
begin
  x:= power(2,1022);
end;

Проверил, возникает та же самая ошибка:
"Floating point overflow"
PM MAIL   Вверх
Oldshelf
Дата 16.1.2024, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 22.4.2018

Репутация: 1
Всего: 4



А что получается с маской исключений?
PM MAIL WWW   Вверх
dmitry8
Дата 16.1.2024, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 7.2.2018

Репутация: нет
Всего: нет



Цитата(Oldshelf @ 16.1.2024,  13:01)
А что получается с маской исключений?

При использовании маски исключений во втором случае получается:
x = INF

В 32-битных системах (без использования маски исключений):
x = 2.2250738585072E-308 ( где x:= power(2,-1022))
x = 4.49423283715579E307 (где x:= power(2,1022)) 

Это сообщение отредактировал(а) dmitry8 - 16.1.2024, 13:32
PM MAIL   Вверх
Oldshelf
Дата 16.1.2024, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 22.4.2018

Репутация: 1
Всего: 4



INF - означает, что значение больше допустимого. Вроде, есть исправление этой недоработки:

https://blog.synopse.info/?post/2011/09/13/...lphi-XE2-64-bit
https://blog.grijjy.com/2021/05/05/high-precision/
PM MAIL WWW   Вверх
Seenkao
Дата 9.2.2024, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 20.12.2020

Репутация: нет
Всего: 1



1. Попробуйте отключить флаги переполнения при отладке.
2. Попробуйте режим Release (там должны быть уже отключены эти флаги).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1369 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.