首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C#中用最小值简化计算

在C#中用最小值简化计算
EN

Code Review用户
提问于 2018-08-23 08:12:48
回答 1查看 56关注 0票数 0

我们必须用用户输入值来计算许多不同的固定因素。每一次计算都有不同的最小值。

这段代码

代码语言:javascript
复制
result.Calculation_VK = input.km_past_year * 0.040m;
if (result.Calculation_VK <= 300)
    result.Calculation_VK = 300;
result.Calculation_VK *= Constant.MWST;

用不同的常数因子和输入变量一次又一次地重复。我的问题是,能不能简化线路

代码语言:javascript
复制
if (result.Calculation_VK <= 300)
    result.Calculation_VK = 300;

同时保持代码的可读性?

我们尝试使用?运算符,但这并不能真正清理代码。尤其是考虑到这些线条会被一遍又一遍地重复。

代码语言:javascript
复制
result.Calculation_VK = input.km_past_year * 0.040m <= 300 ? 300 : result.Calculation_VK * 0.040m;
result.Calculation_VK *= Constant.MWST;

我考虑在getter中创建带有默认值的属性。但是,当我们使用通过几个类和方法共享的公共和可重用对象时,它将导致为每个方法创建对象。

据我理解,这将取消使用对象将所需值传递到计算中的优势。

EN

回答 1

Code Review用户

回答已采纳

发布于 2018-08-23 08:29:34

好吧,最简单的方法是像这样使用Math.Max()

代码语言:javascript
复制
result.Calculation_VK = Math.Max(input.km_past_year * 0.040m, 300) * Constant.MWST  

在类似这样的方法中

代码语言:javascript
复制
public static decimal CalculateVK(decimal pastYear, decimal factor, decimal minValue)
{
    return Math.Max(pastYear * factor, minValue) * Constant.MWST;  
}  

被称为

代码语言:javascript
复制
result.Calculation_VK = CalculateVK(input.km_past_year, 0.040m, 300);
票数 4
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/202288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档