[英]C++ How do I stop outputting the decimal and zero of a number like 5.0 using std::cout
我正要问这个问题,然后发现了更多要问的问题。
然后,我如何(根据最上面的答案)继续只显示一次调用cout的精度,然后再禁用它呢?
假设我想显示前三个呼叫的精确度,而不是最后一个:
(为了进行实验,我为变量指定了与“固定”格式说明符相同的名称)
#include <iostream>
int main(){
using namespace std;
int spam = 5;
double flak = 5.0;
double result = spam * flak;
double fixed = 42;
cout.precision(1);
cout << std::fixed << spam + flak << endl;
cout << result << endl;
cout << flak << endl;
cout << fixed;
return 0;
}
您可以再次调用precision函数来重新应用它,如下所示:
int main(){
using namespace std;
int spam = 5;
double flak = 5.0;
double result = spam * flak;
double fixed = 42;
cout.precision(1);
cout << std::fixed << spam + flak << endl;
cout << result << endl;
cout << flak << endl;
cout.precision(3);
cout << fixed;
return 0;
}
另一种方法是使用<iomanip>
标头使用std::setprecision()
函数并将其传递给std::cout
,因此与执行此操作类似:
#include <iomanip>
#include <iostream>
int main() {
int spam = 5;
double flak = 5.0;
double result = spam * flak;
double fixed = 42;
std::cout << std::fixed << spam + flak << std::endl;
std::cout << std::setprecision(1) << result << '\n' << flak << std::endl;
std::cout << std::setprecision(0) << fixed;
return 0;
}
不知道你想要什么。 但是C ++提供了一些控制流状态的方法。
std::streamsize prec = cout.precision(); // store current precision setting
// some print here
std::cout.precision(prec) // Roll-back
如果您不希望看到小数位,一种(丑陋的)方法是将其cout
为cout
之前的int
。
诸如此类(C风格-对于原始类型仍然可以)
cout << (int)flak << endl;
或( C ++风格 -推荐使用,尤其是对于非原始类型,如类)
cout << static_cast<int>(flak) << endl;
这只会更改cout
看到的内容,而不会更改变量本身。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.