C - 打印浮动值

Fid*_*flo 6 c c++ floating-point precision

我有一个C++程序,它接受值并打印出这样的值:

getline(in,number);
cout << setw(10) << number << endl;
Run Code Online (Sandbox Code Playgroud)

我有一个等价的C程序,它接受值并打印出来像这样:

fscanf(rhs, "%e", &number);
printf("%lf\n", number);
Run Code Online (Sandbox Code Playgroud)

但是当C++程序打印出来时,0.30951C程序会打印出来0.309510.更多例子:C++:0.0956439C : 0.095644. 只要值为7位数,它似乎打印相同的结果,但如果它的7位数字较短,则在末尾添加额外的0.如果超过7位数,它会向下舍入到6位数.我希望C结果与C++程序相匹配.任何帮助,将不胜感激.

谢谢.

注意:number是一个浮点数,从文件中读取数字.

Bob*_*man 10

利用C格式打印语句中的长度和精度说明符:

printf( "%6.4lf", number );
Run Code Online (Sandbox Code Playgroud)

在"单元格"中打印六个字符宽的四个小数位.

您可以使用通配符作为长度或精度来在运行时提供该值:

int precision = 4;

printf( "%6.*lf", precision, number );
Run Code Online (Sandbox Code Playgroud)


Ale*_*ain 8

利用长度和精度说明的在C++ iostream小号

std::cout.precision(4);
std::cout << std::setw(10) << number << "\n";
Run Code Online (Sandbox Code Playgroud)


小智 5

printf("%g\n", number); 
Run Code Online (Sandbox Code Playgroud)

将解决您的问题, %lf 用于双精度, %f 用于浮点数, %g 用于浮点数,当您要显示所有小数位并截断零时。