考虑这样一个列表,其中的数字可以完全是随机的:
List<decimal> someNumber = new List<decimal> {400,300,200,0,-200,-300,-400 };
例如[+ 100%:-100%]或[+1:-1]范围内的公式是什么 要比这里明确相同的问题,但带有负数和C# math
答案 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 }
这也适用于非对称范围或正范围。