[請問] 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