我有一个数字范围
-100
到
100
.
我想把它正常化
0
到
3
带小数点。
-100 = 0
-50 = 0.75
0 = 1.5
50 = 2.25
100 = 3
我想创建一个程序函数来将任何范围规范化为任何值,例如:
http://rextester.com/ZJWNS24313
double Normalize(double val, double valmin, double min, double max)
{
return (val - valmin) / (max - min);
}
然而,这并不能给出正确的输出。
一百
变成
66.6666666666667
而不是
三
.
如果我把公式乘以一个小数
0.045
结果证明是正确的。
((100 - -100) / (3 - 0)) * 0.045
=
三
((50 - -100) / (3 - 0)) * 0.045
=
2.25
((-50 - -100) / (3 - 0)) * 0.045
=
0.75
但是如何才能使公式成为这样,我就不必在末尾指定小数了?
因为如果我想规范化一个新的数字
零
到
5
我得把它换成
0.125
.