C# 标准化范围-100到100到0到3
我的数字范围是C# 标准化范围-100到100到0到3,c#,math,C#,Math,我的数字范围是-100到100 我正在尝试将其标准化为带小数点的0到3 -100 = 0 -50 = 0.75 0 = 1.5 50 = 2.25 100 = 3 我想创建一个程序函数,将任何范围规范化为任何值,例如: 但是,这并不能提供正确的输出 100变为66.6666 7而不是3 如果我将公式乘以一个小数0.045,结果是正确的 ((100--100)/(3-0))*0.045=3 ((50--100)/(3-0))*0.045=2.25 (-50--100)/(3-
-100
到100
我正在尝试将其标准化为带小数点的0
到3
-100 = 0
-50 = 0.75
0 = 1.5
50 = 2.25
100 = 3
我想创建一个程序函数,将任何范围规范化为任何值,例如: 但是,这并不能提供正确的输出
100
变为66.6666 7
而不是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
但是怎样才能得到这个公式,这样我就不必在末尾指定十进制数了
因为如果我想将一个新的数字标准化为0
到5
,我必须将它改为0.125
,试试这个:
double Normalize(double val, double valmin, double valmax, double min, double max)
{
return (((val - valmin) / (valmax - valmin)) * (max - min)) + min;
}
(假设最小值和最大值为-100到100,最小值和最大值为0到3)
编辑:应在末尾添加最小值,而不是减去
试试这个:
double Normalize(double val, double valmin, double valmax, double min, double max)
{
return (((val - valmin) / (valmax - valmin)) * (max - min)) + min;
}
(假设最小值和最大值为-100到100,最小值和最大值为0到3)
编辑:应在末尾添加最小值,而不是减去
似乎缺少一个参数。您需要规格化的值、该值的当前范围(最小值和最大值)和规格化范围(最小值和最大值)。似乎缺少一个参数。你需要标准化的值,该值的当前范围(最小值和最大值)和标准化范围(最小值和最大值)。这似乎工作得很好,我将测试几个值并返回给你。在最后一个术语之前应该是“+”吗?是的@DarenW,我刚刚看到tooThis似乎工作得很好,我将测试几个值并返回给您。在最后一个术语之前应该是“+”吗?是的@DarenW,我也看到了