c语言基础输入输出函数题

include <stdio.h>

int main(void) {

float f = 123.456;
printf("%12f",f);
return 0;

}
用Microsoft Visual c++输出结果是123.456001.请问大佬,教材上结果是123.456000.到底哪个是对的啊?
还有字符串中的"."号算一个字符吗?即这12位包含点号的位吗?

阅读 2.1k
2 个回答

123.456001 和 123.456000 哪个都对是因为计算机计算浮点会有偏差这不是你程序写错了,printf("%12f",f); 12 指的是字段宽度

%[width][.precision][modifier]f

方括号代表可选规范。
可以省略width或.precision或modifier或这些的任意组合。
width值是一个整数,指定包含空格的字符总数。precision值是一个整数,指定小数点后的小数位数。
当输出的值是long double类型时,修饰符部分为L,否则省略它。

计算机中的浮点类型的变量有误差,判断两个浮点变量是否相等时是不能简单用"=="的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题