C转换字符%.8f有什么问题?

时间:2017-04-12 10:50:35

标签: c

当我尝试这段代码时

printf("something %.8f",1.123456789);

它给出了这个结果

1.12345679 

没有8为什么会这样

1 个答案:

答案 0 :(得分:3)

您似乎希望说明符"%.8f"截断小数点后第8位的数字。但是,精度说明符不会截断数字,而是按照SO answer中的说明对数字进行舍入(如果适用,请提及此参考):

  

C99§7.19.6.1fprintf函数; F,F

     

表示浮点数的双参数将转换为   样式[ - ] ddd.ddd中的十进制表示法,其中位数   小数点后的字符等于精度   规格。如果缺少精度,则取6;如果   precision为零且未指定#flag,没有小数点   角色出现。如果出现小数点字符,则至少有一个   数字出现在它之前。 该值四舍五入为适当的值   位数。