在c语言中,这两句输出结果为什么不一样?
输出结果如下:
首先说 printf("%d\n",5/3)为什么是1:
整数除整数,结果依然为整数,结果%d,代表以整数输出结果,输出结果只保留整数部分,所以结果为1,无可厚非。
再说printf("%f\n",5/3);输出结果为什么是0.000000:
与上句程序不同的是,输出结果格式不同,%f代表以浮点数输出,默认保留六位小数。
那么结果为什么是0,000000?
因为5/3是1.666666...是一个无限不循环小数
这就涉及到计算机中关于整数和浮点数的表达方式了,其中整数是以补码表示,而浮点数是以IEEE754标准表示,其单精度浮点数解释方式为数符1位,阶符8位,尾数数值23位
显然表示一个小数是有长度限制的,如果小数部分太长就会小数点右移,阶码减小,阶码用移码表示,但是也有大小限制,这样就会导致溢出,从而无法表示这个数。
下面是其他一些无限小数的输出结果: