Floating Point Error

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

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

    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;
     
  2. rrrFer

    rrrFer Well-Known Member
    Команда форума C\C++ Team

    Регистрация:
    6 сен 2011
    Сообщения:
    1.324
    Симпатии:
    36
    посмотри отладчиком значение stp1.mass[j].x перед умножением
     
  3. zasw

    zasw Гость

    решил, с помошью finit - это была ошибка сопроцессора.
     
Загрузка...
Похожие Темы - Floating Point Error
  1. Hollyman
    Ответов:
    0
    Просмотров:
    1.076
  2. SvetlanaL
    Ответов:
    0
    Просмотров:
    1.039
  3. Vladislava-smile
    Ответов:
    5
    Просмотров:
    1.264
  4. SvetlanaL
    Ответов:
    0
    Просмотров:
    1.219
  5. student55
    Ответов:
    0
    Просмотров:
    1.563
Статус темы:
Закрыта.

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