C - 打印浮动值

时间:2013-03-19 21:56:30

标签: c++ c floating-point precision

我有一个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是一个浮点数,从文件中读取数字。

3 个答案:

答案 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,当您想显示所有小数位并切断零时。