2013-12-16 5 views
0

Есть ли способ в пределах C++ установить окончательное количество десятичных точек на значение поплавка? например, если бы я записывал несколько раз как значения с плавающей запятой, я бы, скорее всего, сгенерировал разные результаты (с точки зрения количества знаков после запятой) и хотел бы генерировать числа с одинаковой длиной, т. е. если число должно было возвращаться как 1.33 и там другие числа, возвращающиеся как говорят 1.333 Я хотел бы сделать первый результат, прочитанный как 1.330.Управление количеством знаков после запятой

Я понимаю, что существуют методы ограничения количества десятичных знаков, таких как setprecision(), но я не хочу потерять точность своих времен.

+0

http://www.cplusplus.com/reference/cstdio/printf/ – clcto

+0

использование setprecision(), но вычислить точность заранее. –

+0

http://www.cplusplus.com/reference/iomanip/setprecision/ –

ответ

4

Вы, кажется, путают две вещи: фактическая точность вычислений с плавающей запятой в C++, и форматирование float (или double или long double) значений при печати с потоками C++ (как соиЬ, например).

Первый зависит от оборудования/платформы, и вы не можете управлять им, кроме выбора между float и double. Если вам нужна более высокая точность, чем то, что может дать вам long double, вам нужна библиотека для произвольной математики точности, например GMPLIB.

Контроль количества цифр после точки при печати/форматирования легче, смотрите, например, такой вопрос: Set the digits after decimal point

+0

* Самый простой способ получить более точную информацию о том, что '' float 's дает вам ', - это использовать' double' или 'long double'. – dan04

+0

Да, забыл об этом, спасибо :) – piokuc

1

Если ваша потребность ограничить знаки после запятой ли из folat, двойные или длинные двойной затем путь - использовать (setprecision). Когда вы будете использовать его отдельно, он будет содержать цифры до десятичной точки, а также, если цифры после десятичной точки меньше заданной точности, она не добавит после них нуль. И решение - использовать фиксированную и showpoint. Поэтому, если вы хотите установить точность до 3 цифр после десятичной точки, напишите эту строку перед отображением или вычислением значений.

cout<<fixed<<showpoint<<setprecision(3); 
Смежные вопросы