Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++/CLI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 142
1

Значение было недопустимо малым или недопустимо большим для Decimal

21.10.2016, 18:29. Просмотров 1144. Ответов 6
Метки нет (Все метки)

Проблема в заголовке темы. Имеем:
C++
1
Dictionary <double, double> f2 = gcnew Dictionary<double, double>();
Вычисляется функция типа double и результат записывается в Dictionary. Сама функция:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
double cubic_spline::lagrange1(double* x, double* y, int n, double _x) const
{
    double result = 0.0;
 
    for (int i = 0; i < n; i++)
    {
        double P = 1.0;
 
        for (int j = 0; j < n; j++)
            if (j != i)
                P *= (_x - x[j])/ (x[i] - x[j]);
 
        result += P * y[i];
    }   
 
    return result;
}
Сама запись:
C++
1
2
3
4
for (double x=-20; x<20; x+=dX) {
        f2.Add(x,s->lagrange1(_x_,_y_,283,x+dX*2)); 
        dX+=0.001;
  }
Вылетает исключение "Значение было недопустимо малым или недопустимо большим для Decimal." именно в f2.Add().

Добавлено через 4 часа 6 минут
Срочно нужна помощь...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2016, 18:29
Ответы с готовыми решениями:

Значение было недопустимо малым или недопустимо большим для UInt32
Добрый день, есть парсер sqllite таблиц, нашел на просторах интернета и...

Значение было недопустимо малым или недопустимо большим для знака
Здравствуйте. Не могу понять почему не работает процедура. Пишет ошибку в 18...

Ошибка времени выполнения: значение было недопустимо малым или недопустимо большим для знака
program ex4; var fin: text; fout: text; funcWords: array of string;...

Ошибка при запуске программы: Значение '-1' недопустимо для 'index'
Доброго времени суток, помогите решить проблему со значением index. При...

При отладке возникает ошибка InvalidArgument - Значение '-1' недопустимо для 'index'
Вот код: using System; using System.Collections.Generic; using...

6
John999
224 / 107 / 79
Регистрация: 17.10.2016
Сообщений: 312
21.10.2016, 20:52 2
Вероятнее всего деление на ноль:
C++
1
2
3
for (int j = 0; j < n; j++)
        if (j != i)
          P *= (_x - x[j])/ (x[i] - x[j]);
здесь :

P *= (_x - x[j])/ (x[i] - x[j]);
0
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 142
22.10.2016, 14:06  [ТС] 3
John999, тогда такой вопрос: ноля там нет, но есть величины -->0, считается ли это в машинной арифметике делением на 0?

p.s и исключение возникает не при вычислении функции, а при добавлении вычисленного значения в Dictionary
0
John999
224 / 107 / 79
Регистрация: 17.10.2016
Сообщений: 312
22.10.2016, 16:30 4
Цитата Сообщение от r00712 Посмотреть сообщение
считается ли это в машинной арифметике делением на 0
это не деление на ноль, иначе вылетело DivideByZeroException.
При делении получаешь число уже свыше 28 знаков после запятой 0.00.......
Оно даже в Decimal не влезло, а у тебя Dictianory для double (15 знаков всего),
отсюда исключение.
0
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 142
22.10.2016, 17:41  [ТС] 5
John999, как решить эту проблему,если деление необходимо. long double в Dictionary не помог.
0
John999
224 / 107 / 79
Регистрация: 17.10.2016
Сообщений: 312
22.10.2016, 17:55 6
прости не знаю что там в задаче
может Biginteger

Аналог BigInteger для вещественных чисел
0
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 142
22.10.2016, 19:14  [ТС] 7
John999, большое спасибо, по крайней мере я разобрался с причиной возникновения исключения!
0
22.10.2016, 19:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2016, 19:14

Ошибка времени выполнения: System.ArgumentException: Значение 'null' недопустимо для 'stream'
Строка: MainForm.Icon := new Icon(GetResourceStream('icon.ico'));

Ошибка при работе с listview: "InvalidArgument=Значение '0' недопустимо для 'index'."
Всем, доброго! Помогите разобраться. Раньше все работало, а сейчас выдает такую...

Ошибка при компиляции "error C2088: <<: недопустимо для class"
Доброго времени суток :) у меня при компиляции возникает ошибка...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru