知道答案应该是27.000000,但是我运行出来的答案是27.000001,请大神帮忙看下是哪里出错了嘛?谢谢。

知道答案应该是27.000000,但是我运行出来的答案是27.000001,请大神帮忙看下是哪里出错了么,万分感谢。图片说明

float数据在计算机机器内部是2进制数,一般用1个字(4个字节,32位)来表示,
1位符号位
8位指数位
23位“尾数”位
2^23=8388608,一共7位,这意味着最多能有7位有效数字,但是能绝对能保证的为6位,也即float的精度为6~7位。
你的最后一位超了,出现误差很正常

这涉及到浮点数的表示,需要了解一点组成原理的知识,可以给楼主举个例子了解一下,楼主可以单独定义一个float x=1.1f 然后直接printf
输出这x ,肯定能正确显示,输出x+1.1f也不会有问题但是如果输出x+12.1f,会发现结果为13.200001 这是在浮点数运算时,出现了 对阶,
在底层将浮点数转化成二进制时,小数部分是乘2取整的,不一定能表示完,相信楼主在学完组成原理的时候会知道的