c语言关于变量的问题为什么每次乘出来的结果不对
int main(){
float a=10.35;
double c =a;
for (int b=1; b<=15;b++)
{
c = c*10.0;
printf("\n第%d次c=%f",b,c);
}
return 0;
}//比如每次都比原结果多,比如第一次10.35*10.0应该等于103.500000却等于103.500004 double 类型的话用 %lf 输出,请参见 -> http://bbs.fishc.com/thread-66471-1-1.html 我找到问题了是类型进行强制转换有误差 想想还是写出来了,问题出在转换上,pc的编译系统,并不认识,十进制的数值,所以每次转换的时候都需要把十进制的数值转换成二进制的,这里就要说十进制小数转换成二进制的方法是*2,一直乘到没有小数为止,但是本题10.35这个十进制数,小数部分无法把小数乘没所以就出现了误差。 b和c定义的是double型,那么输出不应该是%d,应该是%lf
页:
[1]