如何格式化C中的输出?

时间:2010-02-11 10:09:53

标签: c double printf

我有这个代码用于学校作业,但我无法设法格式化它。当我运行程序时,我一直得到1.27768e-307。

lp->价格为双倍,值为1000000.0000000000

printf("Price of flat: %g\n", lp->price); 

有什么想法吗? 其他双值的格式正确,只是没有价格。

4 个答案:

答案 0 :(得分:8)

请注意,浮点数据类型真的不适合代表资金。

然后尝试:

printf("Price: %6f\n", lp->price);

%f说明符不使用科学记数法。

答案 1 :(得分:2)

(1)由于你使用的是double,你应该添加l length说明符:

那不是真的。 l长度说明符不用于%e,%f或%g;无论如何,这些转换需要加倍。 (使用L长度说明符取长的两倍。)

因为printf是一个varargs函数,如果你给它一个浮点数,它会自动将它提升一倍。

答案 2 :(得分:0)

%g将以正常格式或指数格式打印您的双精度格式。 %f适用于您始终需要十进制表示法的时候。

另请参阅http://en.wikipedia.org/wiki/Printf#printf_format_placeholdershttp://man.cx/printf%283%29

- {编辑:我删除了这个答案,因为已经给出了另一个答案,但我意识到提到%g会有用}}

答案 3 :(得分:0)

确保您的lp->price真的是double,而不是指向某个内容(double*)或某些内容(double[])的指针。