выходной эквивалент% .2f или% .2lf - PullRequest
7 голосов
/ 29 сентября 2011
double d = 1/2.;
printf("%.2lf\n", d);

Это распечатывает 0.50. Это то, что я хочу воспроизвести, используя манипуляторы ostream. Однако ни один из очевидных манипуляторов iomanip не позволил мне установить минимальные требуемые десятичные разряды (если я правильно понял, setprecision устанавливает максимальную ширину). Есть ли чистый iostream или boost способ сделать это?

Ответы [ 3 ]

10 голосов
/ 29 сентября 2011

Вы можете использовать std::fixed и std::setprecision из заголовка iomanip:

#include <iostream>
#include <iomanip>
int main(void) {
    double d = 1/2.;
    std::cout << std::fixed << std::setprecision(2) << d << std::endl;
    return 0;
}

Это выводит 0.50 по желанию.

3 голосов
/ 29 сентября 2011

Используйте setprecision в сочетании с fixed.

В соответствии с разделом 22.4.2.2.2 стандарта, прецизионные спецификации для iostream имеют точно такой же эффект, как и для printf. И fixed дает точно такое же поведение, как и printf * %f.

1 голос
/ 29 сентября 2011
...