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)
利用长度和精度说明的在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 用于浮点数,当您要显示所有小数位并截断零时。