C语言为什么当输出一个固定float型时输出的数字变了,就是float a=666.666,我再用“%f”

输出时,结果就成了666.666016,为什么呢?谢谢大家了!!
2025-06-22 08:12:44
推荐回答(4个)
回答1:

因为%f,也就是float型变量的精度就是小数点后六位,你指定按照%f格式输出,当然会变。可以尝试%nf,n为数据宽度。

回答2:

float型 数字,内存32位2进制, 有效数字位数只有 6-7 位(十进制),所以 输出 位数多的时候,可靠的数字只有前面的 6-7位。
改用 double 型 数字,内存64位2进制, 有效数字位数 就有 14-15 位了。

回答3:

其实这是和计算机硬件有关系的,你知道的计算机的存储结构是二进制,也就是说计算机内部所有的数据都是以二进制的形式进行保存,那么这个浮点数也不例外,因此存在一定程度上的近似。随着计算机位数的提高,可以提高数据的表示精度以及范围。

回答4:

试试”.3%f "