Форум программистов, компьютерный форум CyberForum.ru

Вместо нуля выводит непонятное число - C++

Восстановить пароль Регистрация
 
Shagron
0 / 0 / 0
Регистрация: 17.05.2013
Сообщений: 1
18.05.2013, 00:19     Вместо нуля выводит непонятное число #1
Вот пожалуйста кусок кода, считающий неувязку после решения СЛАУ:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
     int n=5;
     double **a, *b, *x, r, c, s, q;
     int i, j, d, p, m, k;
---------------------//----------------------
     double nev, del, z, summ;
 
    for (i=1; i<=n; i++)
        {
            summ=0;
 
            for (j=0; j<=n; j++)
                {
                   summ += a[i][j]*x[j];
                }
 
            nev = fabs(b[i]-summ);
 
            cout << setw(20) << summ << setw(20) << nev << endl;
 
            z+= nev;
        }
 
        del= z / n;
 
        cout << "Neviazka:" << del << endl;
Высчитывает в общем верно, но если переменные "nev" "del" по итогам расчётов получаются 0, то вместо нуля выводятся числа на подобии этого: 3,84005е-308. Подскажите в чём проблема и как от этого избавиться?
З.Ы. если перед выводом переменных добавить округление (del = floor(del+ .5)), то всё получается норм, но не очень хочется костылями такими пользоваться.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2013, 00:19     Вместо нуля выводит непонятное число
Посмотрите здесь:

Вывод длинного числа вместо нуля C++
Выдает непонятное число!С++ C++
вывод, вместо нуля, непонятного числа C++
Выводит непонятное число C++
Вместо результата выводит непонятное число C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MyMind
24 / 24 / 7
Регистрация: 14.05.2013
Сообщений: 68
18.05.2013, 01:12     Вместо нуля выводит непонятное число #2
попробуйте вместо этого
C++
1
 double nev, del, z, summ;
написать это
C++
1
 double nev, del, z = 0, summ;
Genn55
341 / 188 / 37
Регистрация: 26.12.2012
Сообщений: 658
18.05.2013, 02:02     Вместо нуля выводит непонятное число #3
Проблема в представлении double в памяти.В процессе вычислений в каком то далеком знаке после запятой появляется значащяя цифра вот и появляется подобная запись в экспоненциальном виде.Приходится округлять.По этому поводу написано много различных статей и мнения расходятся.Так что пока так.Либо floor,либо setprecision(8) в потоке вывода.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4919 / 2662 / 243
Регистрация: 29.11.2010
Сообщений: 7,398
18.05.2013, 05:02     Вместо нуля выводит непонятное число #4
Цитата Сообщение от Shagron Посмотреть сообщение
del= z / n;
где проверка деления на 0?

Добавлено через 1 минуту
Проблема в том, что 0 это вовсе не 0, а очень мизерное число. В джаве с этим еще хуже, на С++ ноль еще выдерживает несколько изменений
Yandex
Объявления
18.05.2013, 05:02     Вместо нуля выводит непонятное число
Ответ Создать тему
Опции темы

Текущее время: 06:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru