我有一个C ++程序,它接受值并打印出这样的值:
getline(in,number);
cout << setw(10) << number << endl;
我有一个等价的C程序,它接受值并打印出来像这样:
fscanf(rhs, "%e", &number);
printf("%lf\n", number);
但是当C ++程序打印出来时,0.30951
C程序打印出0.309510
。更多示例:C ++:0.0956439
C:0.095644
。只要值为7位数,它似乎打印相同的结果,但如果它的7位数字较短,则在末尾添加额外的0。如果超过7位数,它会向下舍入到6位数。我希望C结果与C ++程序相匹配。任何帮助将不胜感激。
感谢。
注意:number是一个浮点数,从文件中读取数字。
答案 0 :(得分:8)
利用C格式打印语句中的长度和精度说明符:
printf( "%6.4lf", number );
在六个字符宽的“单元格”中打印四个小数位。
您可以使用通配符作为长度或精度来在运行时提供该值:
int precision = 4;
printf( "%6.*lf", precision, number );
答案 1 :(得分:8)
利用C ++ iostream
s
std::cout.precision(4);
std::cout << std::setw(10) << number << "\n";
答案 2 :(得分:4)
printf("%g\n", number);
将解决您的问题,%lf用于double,%f用于float,%g用于float,当您想显示所有小数位并切断零时。