如何计算任意范围内的值百分比?

时间:2018-12-10 18:45:08

标签: c#

考虑这样一个列表,其中的数字可以完全是随机的:

 List<decimal> someNumber = new List<decimal> {400,300,200,0,-200,-300,-400 };

例如[+ 100%:-100%]或[+1:-1]范围内的公式是什么 要比这里明确相同的问题,但带有负数和C# math

1 个答案:

答案 0 :(得分:1)

您的问题尚不清楚,但我认为您正在尝试将列表标准化为介于-1和+1之间。

这将获取列表并将其标准化为0-2,然后将结果下移至-1至+1。

List<decimal> someNumber = new List<decimal> { 400, 300, 200, 0, -200, -300, -400 };
var min = someNumber.Min();
var max = someNumber.Max();
var range = max - min;
var normalizedList = someNumber.Select(x => 2*(x-min)/(range) - 1).ToList();

C#交互式shell输出:

> normalizedList
List<decimal>(7) { 1, 0.75, 0.5, 0, -0.5, -0.75, -1 }

这也适用于非对称范围或正范围。