2013-06-07 4 views
0

Я создаю программу калькулятора, но я не знаю, как установить точность десятичных знаков вычисленного ответа так, чтобы отображалось фактическое число десятичных знаков. Примеры: -Если ответ 6, то отображения будет 6, а не 6.0000000Двойной: используя фактическое число знаков после запятой

-если ответ 8,23, это отображение будет 8.23, не 8,23000000

т.д.

Как бы я поставил точность как таковая?

+0

Как вы показываете цифры? Какую документацию вы используете? –

ответ

2

В C++ использовать прецизионный метод, чтобы установить количество необходимых заполнителей, таких как:

double f = 3.14159; 
    std::cout.unsetf (std::ios::floatfield);    // floatfield not set 
    std::cout.precision(5); //will output 5 digits after point 
    std::cout << f << '\n'; 
    std::cout.precision(10); //will output 10 digits after point, like 3.1415900000 
    std::cout << f << '\n'; 
    std::cout.setf(std::ios::fixed, std:: ios::floatfield); // floatfield set to fixed 
    std::cout << f << '\n'; 

Чтобы удалить замыкающие нули, вы можете использовать

std::cout.precision(0); 
2

В принципе, вы можете установить:

std::cout.precision(6); // 6 digits 

или любое значение, что вам нужно. Или:

std::cout << std::setprecision(5) << my_double_value << std::endl; 
+1

Насколько я понимаю его вопрос, он не хочет никаких завершающих нулей. Так что это не просто вопрос точности. –

+0

@Layne std :: setprecision не отображает конечные нули. –

+0

В любом случае, ответ не имеет смысла, поскольку OP сказал, что он «случайно помечен как C++». – maverik

1

iostream обеспечивает setprecision функцию:

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

выход будет:

3.1416 
3.14159 
3.14159 
3.141590000 
1

Это будет работать:

printf("%g",value); 
1

Там не "фактическое количество знаков после запятой". Двойная точность имеет число двоичных мест, но они не надежно отображаются в число десятичных знаков. Простым примером является 1.0/10,0, который должен быть 0,1, но на самом деле является числом, близким к 0,1; сколько десятичных разрядов, которые вы показываете для таких сумм, как, таким образом, не является качеством самого двойника, а скорее количеством десятичных знаков, которые вы хотите показать.

Как вы можете усечь число, которое хотите, было обсуждено в других ответах.

+0

Ahhh, спасибо за разъяснение. – user1824518

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