为了账号安全,请及时绑定邮箱和手机立即绑定

我运行出来的结果总有一点很小的误差,可能是数据类型转化的问题,麻烦大神看看哪里的问题

我运行出来的结果总有一点很小的误差,可能是数据类型转化的问题,麻烦大神看看哪里的问题

C
慕神0145085 2018-03-27 16:51:30
北京市出租车打车计费规则如下: 1. 每公里单价计费2.3元 2. 起步价13元(包含3公里) 3. 晚上23点(含)至次日凌晨5点(不含)打车,每公里单价计费加收20%。 4. 每次乘车加收1元钱的燃油附加税。 小明每天上下班都要打车回家,公司和家的距离为12公里,上午上班时间为9点,下午下班时间为6点。 请编写一个小程序计算小明每天打车的总费用。#include <stdio.h>float fee(int distance,int time){if (distance<=3)return 14.0;else{    if (time>=23||time<5)    {        return 14.0+(2.3*1.2)*(distance-3.0);    }    else        return 14.0+2.3*(distance-3.0);}}int main() {    int a,b,c;   float f;   printf("请输入距离:");   scanf("%d",&a);   printf("\n请输入上班出发时间");   scanf("%d",&b);   printf("\n请输入下班出发时间");   scanf("%d",&c);   f=fee(a,b)+fee(a,c);   printf("\n打车总费用为:%f元",f);    return 0;}运行出来是这样的:请输入距离:12请输入上班出发时间9请输入下班出发时间6打车总费用为:69.400001元Press any key to continue数字后面总出现一个1是哪里的问题?
查看完整描述

2 回答

?
Frank作家

TA贡献37条经验 获得超9个赞

你限制他的类型 先扩大几倍用整型计算 然后再缩小扩大的倍数


查看完整回答
反对 回复 2018-04-03
?
树那边

TA贡献6条经验 获得超0个赞

浮点运算会有一定的误差,正常。

查看完整回答
反对 回复 2018-03-29
  • 2 回答
  • 1 关注
  • 829 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信