繁体   English   中英

C ++如何停止使用std :: cout输出像5.0这样的数字的十进制和零

[英]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

如果您不希望看到小数位,一种(丑陋的)方法是将其coutcout之前的int

诸如此类(C风格-对于原始类型仍然可以)

cout << (int)flak << endl;

或( C ++风格 -推荐使用,尤其是对于非原始类型,如类)

cout << static_cast<int>(flak) << endl;

这只会更改cout看到的内容,而不会更改变量本身。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM