![](/img/trans.png)
[英]Range Slider in WP8 to select a range within maximum and minimum value
[英]Convert linear range to another range, maintaining ratio, but without knowing the original minimum and maximum
因此,对于 C#,我正在处理一个包含变量的数据集,该变量可以具有我无法预先确定的各种范围的值。 范围是一个值,可以是-x到x,中位数是0,x可以是-15到15这样的范围,也可以是-1到1。我收到的数据更多是基于从 0 到范围 min 到范围 max 的偏差,我相信这对公式至关重要。
我正在尝试将 -x 的范围转换为 x,使其处于 0 到 100 或 -1 到 1 的范围内,同时保持原始比率。 我看过将数字范围转换为另一个范围,保持比率,但那里的公式需要一个已知和预定的范围最小值和最大值。 数学当然不是我的强项,我完全不知道如何转换这些数据,所以这里的任何帮助将不胜感激。
如果它确实有帮助,我收到的数据在列表/数组中,类似于:
x[]:{ 1.47f, 1.21f, 0.49f, -0.05f, -0.69f, -1.8f, -2.35f, -1.2f, -0.42f, 4.56f }
因此,您实际上希望将您的值转换为百分比,其中您的最大值和最小值在您的数据中定义,因此事先不知道。
知道了这一点,您就可以使用此解决方案中提供的数学: 数学范围到百分比
然后下面的代码应该可以工作。
float[] range = { 1.47f, 1.21f, 0.49f, -0.05f, -0.69f, -1.8f, -2.35f, -1.2f, -0.42f, 4.56f };
float min = range.Min();
float max = range.Max();
float[] newValue = new float[range.Length];
for (int i = 0; i < range.Length; i++)
newValue[i] = (range[i] - min) / (max - min);
for (int i = 0; i < range.Length; i++)
Console.WriteLine($"Value: {range[i]}: New Value {newValue[i]}");
这会产生一个介于 0 和 1 之间的值,如果你想转换为介于 0 和 100 之间的值,那么你只需要将它乘以 100。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.