使用<< with double时防止ostream中的科学记数法

Dog*_*Dog 34 c++ iostream scientific-notation

我需要阻止我的双重打印在我的文件中的科学记数法,

当我这样做

outfile << X;
Run Code Online (Sandbox Code Playgroud)

dav*_*ter 35

要设置浮动变量的格式,你可以使用的组合setprecision(n),showpointfixed.为了使用参数化流操纵器,setprecision(n)您必须包含iomanip库:

#include <iomanip>
Run Code Online (Sandbox Code Playgroud)

setprecision(n):将浮动输出约束到n位置,一旦设置它,它将被设置,直到您为流输出的其余部分显式取消设置它.

fixed:将强制所有浮点数以相同的方式输出.所以,如果您的精度设置为4个地方,6.26.20都将输出为:

6.2000
6.2000
Run Code Online (Sandbox Code Playgroud)

showpoint:将强制显示浮点变量的小数部分,即使未明确设置.例如,4将输出为:

4.0
Run Code Online (Sandbox Code Playgroud)

一起使用它们:

outfile << fixed << showpoint;
outfile << setprecision(4);
outfile << x;
Run Code Online (Sandbox Code Playgroud)

  • 是什么让你认为showpoint在这里有所作为?由于精度,小数部分始终显示为0. (2认同)

Roz*_*uur 6

这是一个使用示例 http://cplus.about.com/od/learning1/ss/clessontwo_4.htm

根据你的问题使用

  std::cout << std::fixed << a << std::endl;
Run Code Online (Sandbox Code Playgroud)


mat*_*tiu 6

所有上述答案都很有用,但没有一个直接回答这个问题.

outfile.setf(ios_base::fixed);
outfile << x;
Run Code Online (Sandbox Code Playgroud)

我在@moogs链接中找到了答案:http://www.cplusplus.com/reference/iostream/ios_base/fmtflags/

这是一个演示程序:http://ideone.com/FMxRp1