php停车场计时收费软件,停车场计时收费该用什么公式计算?

本文介绍了如何使用Excel解决一种简单的计费问题,涉及HOUR、MINUTE和IF函数的运用。解法1通过基础函数计算小时费用,并利用IF判断分钟是否超过30分钟进行进位。解法2则引入了CEILING和ROUNDDOWN函数,更精确地处理时间换算和进位。文章鼓励读者动手实践并探讨更多解题方法。
摘要由CSDN通过智能技术生成

Excel基础学习园地公众号“Excel基础学习园地”是一个免费发布Excel基础知识、函数应用、操作技巧、学习方法等资讯的公众号,请点击上方“Excel基础学习园地”添加关注,方便我们每天向您推送精彩资讯。

202353458_2_20200916102910771_wm

问题如下图所示:

这是一类比较简单的计费问题,简单指的是计算规则,相比那种阶梯计费的问题来说,计算方式比较单一。

难点在于时长的计算,需要具备时间差的计算能力,同时还要具备到数字进位方面的能力……

再说就露馅了,还是那句话:结合自己掌握的函数去分析解题的思路,动手尝试后再看下文的内容,对于增加公式函数的使用经验是非常有好处的!请仔细理解题意并做思考后再继续阅读下面的内容!!!解法1

公式1:=HOUR(B3-A3)*14.5+IF(MINUTE(B3-A3)>30,1,0)*14.5

这是一个中规中矩的公式,用到了三个很基础的函数:HOUR、MINUTE和IF。

HOUR的功能是得到一个时间中的小时,MINUTE的功能是得到一个时间中的分钟。

在本例中,直接使用B3-A3就能得到停车的时间:

HOUR(B3-A3)*14.5计算出小时部分再乘以每小时的单价,就能得到停车费的一部分:

例如第一行数据,实际停车时间是6:36(6小时36分),6✖14.5=87。

IF(MINUTE(B3-A3)>30,1,0)这部分是利用IF函数实现了超过0.5小时进位的算法:

直接按公式翻译过来就是:当停车时间的分钟部分大于30(即0.5小时),则得到1,否则得到0。

明白了这一点,整个公式的思路就很清晰了。

这个公式难度较低,对时间类函数的基本用法有所了解就能写出来,公式的巧妙之处在于利用IF函数的特性,绕开了取舍类函数的使用,比较适合初学者。

相对于第一个公式而言,下面这个公式就有点难度了。解法2

公式2:=CEILING(HOUR(B3-A3)+IF(ROUNDDOWN(MINUTE(B3-A3)/60,2)>=0.5,1,"0"),1)*14.5

这个公式可以说是完全把计费标准用Excel的语言表述出来了,除了公式1中用到的三个函数之外,另外使用了两个取舍函数CEILING和ROUNDDOWN。

这个公式是把分钟先换算成小时:

例如第一行,实际停车时间中分钟值是36,要把36分钟换算成小时只需要除以60即可,这样换算后会出现小数位比较多的情况,要将多余的小数部分舍去,就用到了ROUNDDOWN函数,这个函数的功能就是将一个数字按照按照指定的小数位进行舍去计算。使用方法与ROUND函数完全一致,区别在于ROUND是按照指定的小数位进行四舍五入。还有一个ROUNDUP则是按照指定位数直接进位,关于这三个函数可以参阅教程:

公式2中的另一个取舍函数CEILING的功能是将一个数字按照指定的基数进位用一个简单的示例来说明这个函数的功能:

202353458_10_20200916102914740_wm

可以看到,所有的数据都变成了大于原数并且是最接近原数的0.3的倍数。

公式2的原理不难理解,虽然会显得比较啰嗦,不过对于熟练多个函数嵌套的还是有好处的。

其实这个公式完全可以这样写:

=(HOUR(B3-A3)+(MINUTE(B3-A3)/60>=0.5))*14.5

公式1也可以按这个写法调整为:

=(HOUR(B3-A3)+(MINUTE(B3-A3)>=30))*14.5

这是用到了逻辑值的特性,将IF函数也省去了。

关于这个问题的解法,还有其他几种巧妙的公式,咱们下次接着讨论,如果你已经想到的话,也可以留言哦!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的停车场计时收费程序的C语言实现: ```c #include <stdio.h> int main() { int hour_in, minute_in, hour_out, minute_out, park_hour, park_minute; int fee = 0; printf("请输入进入停车场小时数和分钟数(用空格隔开):"); scanf("%d%d", &hour_in, &minute_in); printf("请输入离开停车场小时数和分钟数(用空格隔开):"); scanf("%d%d", &hour_out, &minute_out); // 计算停车时间 park_hour = hour_out - hour_in; park_minute = minute_out - minute_in; if (park_minute < 0) { park_minute += 60; park_hour--; } // 根据停车时间计算停车费用 if (park_hour <= 0) { fee = 2; } else if (park_hour <= 2) { fee = 2 + (park_hour - 1) * 3; if (park_minute > 0) { fee += 3; } } else if (park_hour <= 5) { fee = 8 + (park_hour - 2) * 4; if (park_minute > 0) { fee += 4; } } else { fee = 20 + (park_hour - 5) * 5; if (park_minute > 0) { fee += 5; } } printf("停车时间:%d小时%d分钟,停车费用:%d元\n", park_hour, park_minute, fee); return 0; } ``` 该程序通过用户输入进入停车场的时间和离开停车场的时间,计算停车时间,并根据停车时间计算停车费用。停车费用按照以下规则计算: - 停车时间不足1小时,停车费用为2元; - 停车时间超过1小时不足2小时,停车费用为2+3*(停车时间-1)元; - 停车时间超过2小时不足5小时,停车费用为8+4*(停车时间-2)元; - 停车时间超过5小时,停车费用为20+5*(停车时间-5)元。 该程序可以根据实际需要进行修改和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值