TC关于double的问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 17:51:07
main()
{
double a=111111111,b;
b=a*a;
printf("%.lf",b);
getch();
}

输出的数是12345678987654320
与本来结果12345678987654321相差了1
始终输出不了本来的结果。
希望高手能给个解决方案
但是当我输出B+1时,却出来的是12345678987654322.。
就是怎么都输出不了12345678987654321.
郁闷,真的就没有方法了吗????

我也试了一下,也是这个答案
但看啦书后发现有效数字为17的好像是没有的
double是16
而long double我也试啦一下任然是16
后面多的数是伪随机数

明明是int的数字,你把它当做double,这是有误差的。

把double改成unsigned long int就好了

double有效数字是16位
后面的1被舍去了

用long int吧~