У меня есть программа, которая считает сумму ряда, в неё вводится значение x, точность, с которой определяется значение ln(x) и по формуле считается ln(x)
Я хочу, чтобы в ответе у меня в результате вычислений по формуле выводилось значение (переменная sum), которое не только считается с введённой точностью (difference), но и чтобы у него было такое же количество знаков после запятой, как и в числе, которое вводит пользователь. (difference)
Какая функция определяет количество знаков после запятой переменной double?
Другие языки программирования и технологии
Какая функция определяет количество знаков после запятой переменной double?
нет такой функции, потому что такого понятия не существует. Точнее он известен не для конкретного числа, а для тип данных.
В переменной вполне корректно будет записано 2.00000000000000000008
В переменной вполне корректно будет записано 2.00000000000000000008
Относительная точность double фиксирована. А вот вывод ее значения можно сделать с разным количеством знаков после запятой (точнее, точки). Существует две функции: идущая от C printf и C++-ная cout, тоже со спецификаторами вида вывода, поддерживаемыми через заголовочный файл iomanip
Надо читать их описания и примеры использования и применять :)
Надо читать их описания и примеры использования и применять :)
Вопрос не совсем корректен.
1. Пользователь не вводит тип double (как и другие числовые типы). Он вводит строку символов. которую потом преобразуется к типу double путем честного посимвольного анализа введенной строки. Неважно, что эту тяжелую работу взял на себя sscanf или atod. Эту работу кто-то должен сделать. Вы хотите вмешаться в нее?
Хотите не просто преобразовать сроку к double. но еще и учесть кол-во вводимых символов после запятой? Вам ни чего не остается, как самому обработать строку (написать что-то типа своего my_atod).
2. Уже у введенного числа double не возможности определить точность. Более того, понятие точность в данном случае - это точность, с которой Вам компьютер произвел вычисления. Введенное число 2.0 - компьютер воспринимает, как 2.000000000000000000000.Точность, с которой получены данные, введенные в компьютер - эту величину компьютер ни когда не узнает, если Вы ему особо не скажете.
3. Если уж зашел разговор про точность, то Вы не имеете право просто делать точность результата равной точности исходных данных. Тут есть свои формулы. Погрешность суммы ряда равна погрешности отдельного значения умноженной на кол-во значений.
1. Пользователь не вводит тип double (как и другие числовые типы). Он вводит строку символов. которую потом преобразуется к типу double путем честного посимвольного анализа введенной строки. Неважно, что эту тяжелую работу взял на себя sscanf или atod. Эту работу кто-то должен сделать. Вы хотите вмешаться в нее?
Хотите не просто преобразовать сроку к double. но еще и учесть кол-во вводимых символов после запятой? Вам ни чего не остается, как самому обработать строку (написать что-то типа своего my_atod).
2. Уже у введенного числа double не возможности определить точность. Более того, понятие точность в данном случае - это точность, с которой Вам компьютер произвел вычисления. Введенное число 2.0 - компьютер воспринимает, как 2.000000000000000000000.Точность, с которой получены данные, введенные в компьютер - эту величину компьютер ни когда не узнает, если Вы ему особо не скажете.
3. Если уж зашел разговор про точность, то Вы не имеете право просто делать точность результата равной точности исходных данных. Тут есть свои формулы. Погрешность суммы ряда равна погрешности отдельного значения умноженной на кол-во значений.
Похожие вопросы
- Как в паскале убрать у числа определенно количество знаков после запятой?
- Узнать сколько знаков после запятой в числе? Visual Basic
- Вопрос по информатике. Почему точность вычислений в С определяется только 16 знаком после запятой и почему именно 16?
- Я выучил первые 1000 знаков после запятой числа Пи. Я великий и всемогущий?
- Написать программу которая определяет количество учеников в классе,чей рост превышает средний(Turbo Pascal)
- Написать реализацию перегруженных функций: int func (int * arr, int length); int func (double * arr, int length);
- Как передать имя переменной из функции?
- C++. Зачем определять чистую виртуальную функцию?
- Возможно ли в теории написать программу, которая по изображению графика функции будет определять саму функцию?
- Напишите пожалуйста функцию обмена значений двух переменных на си (не c++) для любого типа данных
Чаще всего их бесконечное количество, например, 666,6666666666666666666....
Но не все их верные, сколько верных, зависит от значения числа.