Floating Point Error

  • Автор темы Автор темы zasw
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zasw

C++:
int i = 124; int j = 0; "c" и "y" это float с диапазоном от 1 до 2; 
x это long double от 0.01 до 100; 
tempsum - long double; cr - long double;
--------------------------------------------------------------------------
for(; i>0; i--, j++)
{  cr = *c - (stp1.mass[j].y);
correctmul(&cr, &csp, stp1);
tempsum += (cr * stp1.mass[j].x * 1000);} //<--- overflow

в указанной строке происходит переполнение
мненужно только 5 знаков после запятой в самом крайнем случае.
с этой ошибкой я довольно часто сталкиваюсь так что мне нужно както решить ее основательно. раньше я просто увеличивал точность(double-> long double).
я разложил цикл получилось что переполнение вызывает
вот это выражение
stp1.mass[j].x * 1000;
 
посмотри отладчиком значение stp1.mass[j].x перед умножением
 
решил, с помошью finit - это была ошибка сопроцессора.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab