急救!!!c语言中 关于 double转int的精度问题

#include
#define TEXT 100000
int main()
{
double a=7.1,c=7.50,f=7.11;
int b,d,e;
b=a/0.1;
d=c/0.01;
e=f/0.01;
printf("%d\n%d\n%d\n",b,d,e);
return 0;
}
为什么结果和我想象的不一样啊,b,d不正常,但是e为什么又正常了阿???
求解阿!

为什么啊?b=70,d=749,e=711 ????

double转int是直接舍去尾数而不是四舍五入,因此对于将将好接近整数的浮点数转换,有可能会少1或者多1(负数),因为浮点数在进制转换和计算上存在误差。

避免这种误差的办法一般是 +0.5 再取整,也就是四舍五入。

计算机精度的问题,比如说,double a = 1; double b = a / 2; 结果会是 b = 0.499999 等。

类型转换,精度丢失,向下强转(为什么说向下呢,由于是字节数长的变短了,需要强转,而且字节数变少了,那就只能丢掉一部分了)
向上的话,会默认转换,小房子搬到大房子,总是有很多空间的,大房子般小房子,就不得不扔掉一些东西。