在你开始 mock 这样一个简单的问题之前,让我解释一下:
我正在尝试确定帐户中各种指标的变化量(百分比 %)。这不是特别难。但是一般如何处理当前值为零或前一个值为零的情况?
即
本周:收入 = $25.6
上周:收入 = $0.0
我目前通过以下公式计算百分比差异:
If (CurrentValue > 0.0 && PreviousValue > 0.0) {
return (CurrentValue - PreviousValue) / PreviousValue;
} return 0.0;
如果前一周的收入为零 - 差异百分比应该是多少? +无限?
如果当前周为零,则相反? -无限?
然后使事情复杂化,您将如何在 Linq-To-SQL 查询中处理它
Upside_Earnings = (statistics.Where(d => d.DateTime > first_startdate && d.DateTime <= first_enddate).Average(e => (double)e.Earnings) > zero &&
statistics.Where(d => d.DateTime > second_startdate && d.DateTime <= second_enddate).Average(e => (double)e.Earnings) > zero) ?
((statistics.Where(d => d.DateTime > first_startdate && d.DateTime <= first_enddate).Average(e => (double)e.Earnings) -
statistics.Where(d => d.DateTime > second_startdate && d.DateTime <= second_enddate).Average(e => (double)e.Earnings)) /
statistics.Where(d => d.DateTime > second_startdate && d.DateTime <= second_enddate).Average(e => (double)e.Earnings)) : zero,
最佳答案
变化可以是积极的也可以是消极的。所以公式是:
var change = ((V2 - V1) / Math.Abs(V1)) * 100;
示例:
- 计算从 V1 = 110 到 V2 = 220 的百分比变化(正变化)
[ ((V2 - V1)/|V1|) * 100 ]
= ((220 - 110)/|110|) * 100 = (110/110) * 100 = 1 * 100 = 100% 变化
= 100% 增加
- 计算从 V1 = 150 到 V2 = 75(负变化)的百分比变化
[ ((V2 - V1)/|V1|) * 100 ]
= ((75 - 150)/|150|) * 100 = (-75/150) * 100 = -0.5 * 100 = -50% 变化
= 减少 50%
注意:这不处理零。你可以自己做
关于c# - 计算两个值之间的百分比差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1376507/