停车费计算

问题描述

因此,我正在努力计算停车系统。我一直在寻找与我的比率相似但未成功的人。

因此,计算应该在前30分钟免费,之后30分钟免费10,然后每半小时5免费。

例如:0、10、15、20、25等

我的想法是从总分钟数中减去60分钟,如果结果为0,则加10;如果结果为> 0,则在前60分钟后的每半小时加5。

问题在于,当总分钟数为60

我觉得应该在前两个半小时内添加一个额外的变量?

任何帮助将不胜感激。

下面是我的代码小贴士:


int rate = 5;

TimeSpan difference = timeOut - timeIn;

                double minutes = Math.Round(difference.TotalMinutes,0);

                    double remainder = minutes % 30;

                    if (remainder != 0)
                    {
                        minutes = (minutes + (30 - remainder)) - 60;
                    }

                if (minutes < 30)
                {
                    minutes = 0;
                    TotalAmount = 0;
                    cashAmountText.Text = "0";
                    vatAmountText.Text = "0";
                    AmountDueText.Text = "0";
                    PayButton.IsEnabled = true;
                    FreeParking = "****Free Parking****";
                }
                else
                {
                    Amount_Due = ((minutes / 30) * rate) + 10;
                    TotalAmount = /*(Amount_Due  * 0.15) + */Amount_Due;
                    VatAmount = TotalAmount * 0.15;
                    Vat =/* TotalAmount - */VatAmount;
                    cashAmountText.Text = Amount_Due.ToString();
                    vatAmountText.Text = Math.Round(Vat,0).ToString();
                    AmountDueText.Text = Math.Round(TotalAmount,0).ToString();
                    PayButton.IsEnabled = true;
                    FreeParking = "****Thank You****";
                }

解决方法

这听起来像是一种表达“每半小时$ 5,少于半小时则免费”的复杂方式。我们可以保持简单,使用公式halfHours * 5来确定应付金额,如果halfHours太小,只需将其清零。

int rate = 5;
double halfHours = Math.Ceiling((timeOut - timeIn).totalMinutes / 30);

if (halfHours == 1) halfHours = 0;

Amount_Due = halfHours * rate;
TotalAmount = Amount_Due;
VatAmount = TotalAmount * 0.15;
cashAmountText.Text = Amount_Due.ToString();
vatAmountText.Text = Math.Round(VatAmount,0).ToString();
AmountDueText.Text = Math.Round(TotalAmount,0).ToString();
PayButton.IsEnabled = Amount_Due > 0;
FreeParking = Amount_Due > 0 ? "****Thank You****" : "****Free Parking****";

我保留了您的进一步计算,但我确实想知道为什么AmountDueText应该包含TotalAmount,为什么TotalAmount总是等于Amount_DueTotalAmount是否不应该包含已加税?

,

一种方法是设置一个temp变量以跟踪剩余的分钟数,然后在每隔30分钟添加一次结果时从中减去:

var timeIn = DateTime.Now;

// Hard code this for testing (3 hours and 30 minutes
var timeOut = timeIn.AddHours(3).AddMinutes(30);

TimeSpan difference = timeOut - timeIn;

double minutes = Math.Round(difference.TotalMinutes,0);
double minutesRemaining = minutes;
int result = 0; // Charge for the first 30 minutes

if (minutesRemaining > 30)
{
    result += 10; // Charge for the second 30 minutes
    minutesRemaining -= 60;
}

while (minutesRemaining > 0)
{
    result += 5;
    minutesRemaining -= 30;
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...