我有一个数字范围-100到100.
我正在尝试将其标准化为0带3小数位。
-100 = 0
-50 = 0.75
0 = 1.5
50 = 2.25
100 = 3
Run Code Online (Sandbox Code Playgroud)
我想创建一个程序函数来将任何范围标准化为任何值,例如:
http://rextester.com/ZJWNS24313
double Normalize(double val, double valmin, double min, double max)
{
return (val - valmin) / (max - min);
}
Run Code Online (Sandbox Code Playgroud)
然而,这并没有给出正确的输出。
100变为66.6666666666667代替3.
如果我将公式乘以小数,0.045结果是正确的。
((100 - -100) / (3 - 0)) * 0.045=3
((50 - -100) / (3 - 0)) * 0.045=2.25
((-50 - -100) / (3 - 0)) * 0.045=0.75
但是如何才能使公式不必在末尾指定小数呢?
因为如果我想将一个新数字标准化为0to5我必须将其更改为0.125。
尝试这个:
double Normalize(double val, double valmin, double valmax, double min, double max)
{
return (((val - valmin) / (valmax - valmin)) * (max - min)) + min;
}
Run Code Online (Sandbox Code Playgroud)
(假设 valmin 和 valmax 为 -100 到 100,min 和 max 为 0 到 3)
编辑:应该在末尾添加最小值而不是减去