当我尝试这段代码时
printf("something %.8f",1.123456789);
它给出了这个结果
1.12345679
没有8为什么会这样
答案 0 :(得分:3)
您似乎希望说明符"%.8f"
截断小数点后第8位的数字。但是,精度说明符不会截断数字,而是按照SO answer中的说明对数字进行舍入(如果适用,请提及此参考):
C99§7.19.6.1fprintf函数; F,F 强>
表示浮点数的双参数将转换为 样式[ - ] ddd.ddd中的十进制表示法,其中位数 小数点后的字符等于精度 规格。如果缺少精度,则取6;如果 precision为零且未指定#flag,没有小数点 角色出现。如果出现小数点字符,则至少有一个 数字出现在它之前。 该值四舍五入为适当的值 位数。