float数在无法精确表示的整数如何舍入?
当float数大于2^24=16777216时,不能完全精确表示之后的整数,例如16777219,16777221等等~
那此时,究竟是怎么舍入的呢?
比如说16777219,就舍入成为16777220.
而16777217,就舍入成为16777216......
那么究竟是怎么舍入的啊?求指点~运行下面程序,结果为
a=16777216.000000
b=16777220.000000
~~!
#include <math.h>
#include<iostream>
int main()
{
float a,b;
a=16777217.0;
printf("a=%f\n",a);
b=16777219.0;
printf("b=%f\n",b);
return 0;
}
#include <math.h>
#include<iostream>
int main()
{
float a,b;
a=16777217.0;
printf("a=%f\n",a);//其二进制是1 0000 0000 0000 0000 0000 0001
//写成1.0000 0000 0000 0000 0000 000 1
//float阶码最多23位,double是52位
b=16777219.0;
printf("b=%f\n",b);//舍去的规则(大于进位那位一半就进位,小于舍去,等于进位保持为偶数)
return 0; //所24位的1要舍去。b表示的最后是1不用舍去。(向偶数靠其符合统计学);
}