Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++/CLI

Войти
Регистрация
Восстановить пароль
 
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 131
#1

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

21.10.2016, 18:29. Просмотров 721. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Значение было недопустимо малым или недопустимо большим для Decimal (C++/CLI):

.NET 3.x Значение было недопустимо малым или недопустимо большим для UInt32 - C#
Добрый день, есть парсер sqllite таблиц, нашел на просторах интернета и возникает такая беда при чтении таблиц, если в таблице есть данные,...

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

.NET 4.x Ошибка при запуске программы: Значение '-1' недопустимо для 'index' - Visual Basic .NET
Доброго времени суток, помогите решить проблему со значением index. При запуске программы вылетает ошибка: &quot;Необработанное исключение...

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

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

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

6
John999
223 / 106 / 49
Регистрация: 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
Сообщений: 131
22.10.2016, 14:06  [ТС] #3
John999, тогда такой вопрос: ноля там нет, но есть величины -->0, считается ли это в машинной арифметике делением на 0?

p.s и исключение возникает не при вычислении функции, а при добавлении вычисленного значения в Dictionary
0
John999
223 / 106 / 49
Регистрация: 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
Сообщений: 131
22.10.2016, 17:41  [ТС] #5
John999, как решить эту проблему,если деление необходимо. long double в Dictionary не помог.
0
John999
223 / 106 / 49
Регистрация: 17.10.2016
Сообщений: 312
22.10.2016, 17:55 #6
прости не знаю что там в задаче
может Biginteger

Аналог BigInteger для вещественных чисел
0
r00712
0 / 0 / 0
Регистрация: 07.09.2013
Сообщений: 131
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
Привет! Вот еще темы с ответами:

Ошибка при компиляции "error C2088: <<: недопустимо для class" - C++
Доброго времени суток :) у меня при компиляции возникает ошибка 1&gt;main.cpp(493): error C2088: &lt;&lt;: недопустимо для class суть в том...

DropDownList имеет SelectedIndex, что недопустимо, так как этот элемент не существует в списке элементов - C# ASP.NET
Перестал работать код, выбрасывает эту ошибку. В pageload этот код: for (int i = -12; i &lt; 0; i++) ...

Ошибка "%: недопустимо, правый оператор имеет тип double" - C++
int _tmain(int argc, _TCHAR* argv) { setlocale( LC_ALL,&quot;Russian&quot; ); double a, b, e, q1, q2; int c, d, p1, p2; int k=0; ...

О недопустимо большой ошибке определения энергии ионизации методом ударной ионизации - Квантовая и атомная физика
Сам никак не могу найти ошибку в рассуждениях, поэтому рискую выложить их здесь. Не судите слишком строго, если что. Для проведения...


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

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

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