gpt4 book ai didi

c# - 有没有办法缩短这么长的 if/else if return 方法?

转载 作者:太空狗 更新时间:2023-10-30 00:55:03 25 4
gpt4 key购买 nike

我有这个很长的方法:

public decimal decDiscount(QuoteData quoteData)
{
if (TotalChapter7(quoteData) >= 7499)
return 5300;
else if (TotalChapter7(quoteData) >= 7449)
return 5300;
else if (TotalChapter7(quoteData) >= 7399)
return 5250;
else if (TotalChapter7(quoteData) >= 7349)
return 5200;
else if (TotalChapter7(quoteData) >= 7299)
return 5200;
else if (TotalChapter7(quoteData) >= 7249)
return 5150;
else if (TotalChapter7(quoteData) >= 7199)
return 5100;
else if (TotalChapter7(quoteData) >= 7149)
return 5100;
else if (TotalChapter7(quoteData) >= 7099)
return 5050;
//...
else if (TotalChapter7(quoteData) >= 1199)
return 1100;
else if (TotalChapter7(quoteData) >= 1149)
return 1100;
else if (TotalChapter7(quoteData) >= 1099)
return 1050;
else if (TotalChapter7(quoteData) >= 1049)
return 1000;
else
return 0;
}

它有一个重复出现的模式,可以用下面的 Excel 表格来说明:

Excel sheet part 1……>>>> Excel sheet part 2

从最高的“费用”(7499) 开始,每份报表的费用下降 50。但是,每 100 的返回(或“折扣价”)保持不变(两次 50 的费用下降),然后一次返回(一次 50 的费用下降)本身下降 50,然后重复。

如您所见,我的方法很长(我遗漏了 7049 到 1249 之间的部分)。我可以做些什么来缩短这个时间吗?

谢谢。

最佳答案

你们真的把这个复杂化了。任何尝试使用整数运算来解决这个问题的方法都是一个坏主意。看看对于一群非常聪明的人(我们都很聪明,不是吗?)来说,即使一开始就把它做对也是多么困难。它真的很难发现,很难理解,很难正确,而且很难维护。

您需要一种易于理解且易于维护的方法。查看您的原始帖子,您对规则有英文说明。

However, the return (or "Discounted Price") stays the same for each 100 (two 50 drops in Fee), then drops 50 itself for one return (one 50 drop in Fee), and then repeats.

代码实际上是自己写的:

public int GetFeeFromQuoteData(QuoteData quoteData) {
int fee = 5300;
int difference = 7449 - TotalChapter7(quoteData);
bool isTwoStep = true;

while (difference > 0) {
if (isTwoStep) {
difference -= 50;
}
else {
difference -= 100;
}
fee -= 50;
isTwoStep = !isTwoStep;
}
return fee;
}

关于c# - 有没有办法缩短这么长的 if/else if return 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10802613/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com