计算机精度不够的时候进行的舍入操作
0舍1入 末位恒置1
main()
{
float a;
double b;
a = 123456.789e4;
b = 123456.789e4; // 乘以e的4次方
printf(“%f/n%f/n”,a,b);
}
运行结果如下:
1234567936.000000
1234567890.000000
那么计算机是怎么计算的呢?为什么float是那样子的呢?
首先计算机如何存储浮点数 1234567890 转化为 二进制
0100 1001 1001 0110 0000 0010 1101 0010
=
1.00 1001 1001 0110 0000 0010 1101 0010 * 2的30次
去掉1 那么计算机只会保存 00 1001 1001 0110 0000 0010 1101 0010
可是 M只可以保存23位 那么 需要进行舍入操作 舍入 后7位 101 0010 进 1 那么就会 是的精度 多了 2的8次 减去 101 0010= 82 所以就增加了46
网友评论