Floating Point Error

Тема в разделе "Общие вопросы по С и С++", создана пользователем zasw, 5 сен 2012.

Статус темы:
Закрыта.
  1. zasw

    zasw Гость

    Репутация:
    0
    Код (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;
     
  2. rrrFer

    rrrFer Гость

    Репутация:
    0
    посмотри отладчиком значение stp1.mass[j].x перед умножением
     
  3. zasw

    zasw Гость

    Репутация:
    0
    решил, с помошью finit - это была ошибка сопроцессора.
     
Загрузка...
Похожие Темы - Floating Point Error
  1. imendan
    Ответов:
    9
    Просмотров:
    433
  2. Hollyman
    Ответов:
    0
    Просмотров:
    1.453
  3. SvetlanaL
    Ответов:
    0
    Просмотров:
    1.101
  4. Vladislava-smile
    Ответов:
    5
    Просмотров:
    1.332
  5. SvetlanaL
    Ответов:
    0
    Просмотров:
    1.265
Статус темы:
Закрыта.

Поделиться этой страницей