1 / 1 / 0
Регистрация: 17.11.2018
Сообщений: 40
|
|||||||||||
1 | |||||||||||
Ошибка вывода при использовании типа double06.12.2020, 23:49. Просмотров 1709. Ответов 3
Здравствуйте. Написал программу решения нелинейного уравнения комбинированным методом хорд-касательных - она в двух версиях: в первой все вычисления производятся с использованием типа double, а во второй - long double. Компилировал обе версии с помощью одного и того же компилятора mingw, предустановленного в Code::Blocks 17.12. В случае с типом long double я получаю ответ с точностью до 31-го знака после запятой (Рисунок 1). Когда же я попытался запустить вторую версию (double, вычисления до 15-ти знаков после запятой), то получил на выходе -1,#IND000000 (Рисунок 2), а когда попробовал прописать команду #define __USE_MINGW_ANSI_STDIO 1 для неё же, то получил просто какой-то длинный набор цифр (Рисунок 3). И ещё один момент, который бросается в глаза, - количество итераций: хоть там и стоит ограничение в 1024 шага, но всё равно оно выполняется на один шаг больше; я также пробовал ставить ограничение до 1.000.000 шагов - даже в этом случае оно перевыполнялось на одни шаг. Объясните, пожалуйста, почему так получается.
Код программ: 1. тип long double:
0
|
|
06.12.2020, 23:49 | |
Какой спецификатор использовать для корректного вывода типа данных double и long double Ошибка вывода значения 0 типа double Изменить программу вывода функции так, чтобы можно было передавать функции типа double(double,double) Ошибка округления при использовании float или double |
|
170 / 130 / 51
Регистрация: 18.07.2017
Сообщений: 682
|
|
07.12.2020, 15:34 | 2 |
0
|
1 / 1 / 0
Регистрация: 17.11.2018
Сообщений: 40
|
|
07.12.2020, 16:53 [ТС] | 3 |
Понятно. Но как, всё-таки, можно объяснить получение в выводе -1,#IND000000 для double? Может ли быть тому причиной нехватка памяти для записи числа, так как в процессе вычислений дробная часть состоит из чисел, следующих после знака, стоящего на том же месте, что и порядок точности. Т. е. : 1,23456789123456789... при e = 0,000001; то есть выделенная часть не позволяет дальше работать с числом, так как в процессе вычислений мы как бы "входим" на территорию типа long double?
0
|
170 / 130 / 51
Регистрация: 18.07.2017
Сообщений: 682
|
|
07.12.2020, 17:03 | 4 |
https://habr.com/ru/post/171203/
Возможно где-то на 0 поделил или взял от него логарифм. Короче говоря у тебя где-то выполняется недопустимая операция.
0
|
07.12.2020, 17:03 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Ошибка при использовании vector (в конце, после вывода результатов выскакивает ошибка, но сам результат коректен) Ошибка при использовании типа ifstream Ошибка при использовании IEnumerable<T>: Использование универсального типа IEnumerable требует аргумент типа 1
Ошибка при преобразование типа строки из консоли в double Ошибка при передаче свойства типа double с View в контроллер Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |