關(guān)于精度的問(wèn)題
精度問(wèn)題
#include <stdio.h>
double cost(int mile,int ti)
//定義函數(shù)money,mile為距離,ti為時(shí)間
{
? ? int qbj=13;//起步價(jià)13元
? ? double jj=2.3;//計(jì)價(jià)2.3元
? ? int rys=1;//燃油稅1元
? ? double money;//總花費(fèi)費(fèi)用
? ? if(mile<=3)//判斷距離
? ? {
? ? ? ? money=qbj+rys;//統(tǒng)一的價(jià)格
? ? }
? ? else
? ? {
? ? ? ? if(ti<5||ti>=23)//夜間價(jià)格
? ? ? ? {
? ? ? ? money=qbj+rys+(mile-3)*jj*1.2;
? ? ? ? }
? ? ? ? else//白天正常價(jià)格
? ? ? ? {
? ? ? ? money=qbj+rys+(mile-3)*jj;
? ? ? ? }
? ? }
? ? return money;
}
int main()
{
? ? double all;//總價(jià)格
? ? all = cost(12,9) + cost(12,21);
? ? printf("小明每天打車(chē)的總費(fèi)用是%lf",all);
? ? return 0;
}
第一個(gè)加粗的double單獨(dú)改成float后結(jié)果為69.400002,第二個(gè)同理結(jié)果變?yōu)?9.300006。
都是double才能顯示出最正確的答案,為什么。
2020-09-26
double(雙精度型)比f(wàn)loat(單精度型)存的數(shù)據(jù)更準(zhǔn)確些,占的空間也更大。double精度是float的兩倍