[请问] C语言-浮点数相乘结果不再预期中

楼主: mosquito147 (MOSER)   2017-10-19 00:27:21
就是...不是作业啦XD
是被问到简单的两数相乘印出小数点下六位结果
小的测试后
float a;
float b;
float ans;
scanf("%f %f",&a,&b);
ans=a*b;
printf("%0.6f\n",ans);
这样的程式码在 输入8.8 9 竟然会印出79.200005 <
作者: Schottky (顺风相送)   2017-10-19 00:30:00
正常,这和浮点数的实际表示法或说精确度有关float 大约只有七位数的精确度,改用 double 就行了
楼主: mosquito147 (MOSER)   2017-10-19 00:41:00
谢S大 P币发射 我等下再去找一下float/double的资料感恩!!
作者: Schottky (顺风相送)   2017-10-19 00:42:00
可以看看 C_and_CPP 板置底十三诫之第十一诫其他诫也可以都看看,是些常见的陷阱P 币收到了,感谢赠币~
作者: KeyFSN ( ~☼☽✩☁~ )   2017-10-19 18:25:00
double 也是有精度问题 很要求的话就只能找外部函示库
作者: Schottky (顺风相送)   2017-10-19 18:38:00
你,渴望力量吗 #1IDptFlV (C_and_CPP)

Links booklink

Contact Us: admin [ a t ] ucptt.com