2015-09-14 5 views
-1

Я новичок в программировании, поэтому, пожалуйста, ответьте простым языком. Я пытаюсь напечатать двойной. Программа попросит пользователя ввести столько цифр пи, сколько он помнит, а затем он должен отпечатать его обратно. Но он всегда отпечатывает 6 знаков после запятой. Мне это нужно, чтобы напечатать количество десятичных знаков, которые изначально были положить в. Так 3.14 в десятичные, а 3,141592654 равно 9. так печатает то, что положили.Печать десятичных знаков в C++

+2

Пожалуйста, разместите свой код и пример ввода и вывода. – MC93

+4

Почему это помечено тегом [tag: c]? Где ваш код? –

+5

'C' и' C++ '- это разные языки с различными соображениями ввода и вывода. На кого вас интересует? – abelenky

ответ

4

Вам необходимо сочетание std::fixed с последующим std::precision

Как это:

double f =3.14159; 
    std::cout << std::fixed; 
    std::cout << std::setprecision(5) << f << '\n'; // prints 5 decimals 
    std::cout << std::setprecision(9) << f << '\n'; // prints 9 decimals 

что теперь перейти к std::setprecision(), как должна рассчитываться из входного вы получаете аргумент.

+3

Я не понимаю, как это было рассмотрено четыре раза, так как это явно не отвечает на вопрос ... «Мне нужно, чтобы он напечатал количество десятичных знаков, которые были первоначально введены» - ваше решение явно не " это сделать ... – leemes

3

Номера - это номера, а не строки. Они имеют фактическую точность, определяемую их типом (float, double и т. Д.).

Вы не можете «запомнить» исходную логическую точность, если вы не принимаете ввод как строку, подсчитайте точность самостоятельно, , затем конвертировать в число.

Затем вы используете параметры форматирования для воспроизведения этого уровня точности на выходе.

В качестве альтернативы, просто придерживайтесь строками.

2

Только для этого конкретного случая (сравнивая, насколько точным был введенный pi), используйте std::string, а не двойной. Если кто-то, кто знает пару тысяч цифр, использует вашу программу, переменная с плавающей запятой с двойной точностью не будет достаточно точной для сравнения. Вам также нужно будет сохранить ссылку pi как строку.

Кстати, при таком подходе вам больше не придется запоминать, сколько десятичных знаков было введено.

0

Возможно, вам потребуется изучить различия между десятичными и двоичными представлениями чисел.

Ваш пользователь вводит десятичное представление, т.е. каждый символ представляет собой цифру от 0 до 9.

С другой стороны, двойное является двоичным представлением.

Некоторые числа могут быть выражены десятичным представлением, но не эквивалентны в двоичном представлении. Например, вы не можете выразить 0.3 с конечным числом двоичных символов.

Вот почему вы должны хранить свой ввод как десятичный, например, используя строку.

Смежные вопросы