急!!!请教一个有关float和int精度转换的问题.

来源:百度知道 编辑:UC知道 时间:2024/05/28 09:44:35
程序如下:
float i;//需要计算的数
int k; //该数乘以10的8次方后的数
printf("Please enter a number to count the sites of the number!\n The number is:");
scanf("%f",&i);
k=((float)i)*100000000;

测试:当输入i为0.22时,本来k的结果应该是22000000,但是现在结果竟然是21999999,这是为什么?

这个就是精度转换问题,是任何一门编程语言都存在的问题,可以认为是一个bug,

因为小数在机器中是无法精确表示,只能近似表示,所以类型转换的时候就会存在误差