joker.... 发表于 2017-8-19 21:35:15

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

ba21 发表于 2017-8-19 21:41:01

小甲鱼 发表于 2017-8-19 22:35:24

double 类型的话用 %lf 输出,请参见 -> http://bbs.fishc.com/thread-66471-1-1.html

joker.... 发表于 2017-8-20 11:01:12

我找到问题了是类型进行强制转换有误差

奥普瓯江 发表于 2017-8-21 00:47:34

想想还是写出来了,问题出在转换上,pc的编译系统,并不认识,十进制的数值,所以每次转换的时候都需要把十进制的数值转换成二进制的,这里就要说十进制小数转换成二进制的方法是*2,一直乘到没有小数为止,但是本题10.35这个十进制数,小数部分无法把小数乘没所以就出现了误差。

zy520 发表于 2017-8-21 10:58:18

b和c定义的是double型,那么输出不应该是%d,应该是%lf
页: [1]
查看完整版本: c语言关于变量的问题为什么每次乘出来的结果不对