【发布时间】:2019-03-20 07:12:15
【问题描述】:
大家好(抱歉标题不好),
我有一个循环,每次通过时我都可以得到一个舍入差异。我想累积它们并将其添加到我的结果的最后一条记录中。
var cumulatedRoundDifference = 0m;
var resultSet = Enumerable.Range(0, periods)
.Select(currentPeriod => {
var value = this.CalculateValue(currentPeriod);
var valueRounded = this.CommercialRound(value);
// Bad part :(
cumulatedRoundDifference += value - valueRounded;
if (currentPeriod == periods - 1)
valueRounded = this.CommercialRound(value + valueRounded);
return valuesRounded;
}
目前我认为代码不是很好。 是否有这种事情的模式/算法,或者它在某种程度上对 Linq 很聪明,没有循环外的变量?
许多问候
【问题讨论】:
-
你的意思是
return valueRounded;没有s? -
cumulatedRoundDifference 似乎不是返回值的一部分。
-
@Magnus 累积实际上是最后结果的主要内容,因为它在运行循环后发生了变化。我有另一个问题。为什么,对于最后一个值(currentPeriod == period - 1),路由是这样“再次”完成的?