Вычитание двойных чисел в С++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Вычитание двойных чисел в С++

Сообщение Anonymous »

Я занимался научными вычислениями с очень маленькими и очень большими двойниками со значениями в диапазоне от 1e-50 до 1e50. Тем не менее, значения никогда не достигают двойных пределов, т.е. никакого переполнения не происходит.
Пока скрипт работает, вычитание и добавление чисел происходит плавно, пока в какой-то момент не появляется следующая ошибка:
сложение двух одинаковых двойников с разными знаками дает не 0,0 и даже не 0,0000000015 или что-то подобное, а число, которое не имеет абсолютно никакого смысла.
Например

Код: Выделить всё

double x = 1.43441e+49;
double y = -1.43441e+49;
double res = x + y;
Ожидаемое разрешение = 0,0, но я получаю -5,1923e+33.
Проблема возникает только после некоторого запуска сценария. Если я просто запускаю небольшой скрипт, проверяя результат с заданными двойными значениями, он выдает 0,0, как и ожидалось.
Был бы рад получить любую помощь по этому вопросу!

Подробнее здесь: https://stackoverflow.com/questions/784 ... ubles-in-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»