关于精度的问题
精度问题
#include <stdio.h>
double cost(int mile,int ti)
//定义函数money,mile为距离,ti为时间
{
int qbj=13;//起步价13元
double jj=2.3;//计价2.3元
int rys=1;//燃油税1元
double money;//总花费费用
if(mile<=3)//判断距离
{
money=qbj+rys;//统一的价格
}
else
{
if(ti<5||ti>=23)//夜间价格
{
money=qbj+rys+(mile-3)*jj*1.2;
}
else//白天正常价格
{
money=qbj+rys+(mile-3)*jj;
}
}
return money;
}
int main()
{
double all;//总价格
all = cost(12,9) + cost(12,21);
printf("小明每天打车的总费用是%lf",all);
return 0;
}
第一个加粗的double单独改成float后结果为69.400002,第二个同理结果变为69.300006。
都是double才能显示出最正确的答案,为什么。