这和浮点数在内存中的表示方法有关,浮点数在内存中以二进制数形式存在。 float数转换二进制遵从的是IEEE R32.24规范,浮点数二进制表现形式是科学计数法方式。 由于精度和算法限制,十进制到二进制转换过程中不能精确转换造成此问题。如:0.6转成二进制位数为1001100110011001100110011.......根本不能精确转换。 你可以做个试验 void main() { float a; printf("XXXXXXXX:"); scanf("%f",&a); printf("\n %.3f %.4f %.5f %.6f %.7f %.8f %.9f %.10f %.10f\n",a,a,a,a,a,a,a,a); }
浮点数本来就有精度。
70,022
社区成员
243,263
社区内容
加载中
试试用AI创作助手写篇文章吧