0

我有这个代码:

double a = 7.456789;
cout.unsetf(ios::floatfield);
cout.precision(5);
cout << a;

还有这个:

double a = 798456.6;
cout.unsetf(ios::floatfield);
cout.precision(5);
cout << a;

第一个代码的结果是:7.4568 这几乎是我想要的(我想要收到的是 7.4567)第二个代码的结果:7.9846e+05 这根本不是我想要的(我想要 798456.6)我想要将数字打印到小数点后 4 个数字

我怎样才能做到这一点 ?

4

1 回答 1

4

通过使用unsetf(),您是在告诉cout将其默认格式用于浮点值。由于您想要小数点后的确切位数,因此您应该使用setf(fixed)orstd::fixed代替,例如:

double a = ...;
std::cout.setf(std::fixed, ios::floatfield);
std::cout.precision(5);
std::cout << a;

.

double a = ...;
std::cout.precision(5);
std::cout << std::fixed << a;
于 2013-01-01T08:28:26.247 回答