Floating Point Error

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

zasw

Гость
#1
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;
 
R

rrrFer

Гость
#2
посмотри отладчиком значение stp1.mass[j].x перед умножением
 
Z

zasw

Гость
#3
решил, с помошью finit - это была ошибка сопроцессора.
 
Статус
Закрыто для дальнейших ответов.