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



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

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

这个公式在范围内是什么?例如[+100%:-100%]或[+1:-1]澄清与这里相同的问题,但带有否定和c#数学

您的问题不清楚,但我认为您试图将列表规范化为-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 }

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

最新更新