使用相同的比率将数字舍入到更小或更大的尺寸

时间:2013-05-07 05:54:26

标签: c# math floating-point int

我不知道如何描述它(所以我无法查找)但我需要帮助。假设我有0到200中的100,我如何将数字比为0到100所以它会像50?简单地将数字与较小或较大的尺寸进行比较?

4 个答案:

答案 0 :(得分:2)

计算原始最大值与新最大值之间的比率:

double k = (double)newMax / (double)oldMax

在您的示例中,您最终会得到值0.5

然后将该值乘以比率:

double newValue = value * k;

如果您想要一个整数值,请将其四舍五入并转换为整数:

int newValue = (int)Math.Round(value * k);

答案 1 :(得分:1)

一般来说,当“旧”和“新尺度”的最小值不一定为0时,解决方案如下:

ratio =(oldValue - oldMin)/(oldMax - oldMin)

newValue = newMin +(newMax - newMin)* ratio

答案 2 :(得分:0)

double myRatio, maxValue, newValue;
//value retrieval logics.
double result = (myRatio / maxValue) * newMaxValue;
你必须填写第一行的双打。 这是我说的最短的代码。

答案 3 :(得分:-1)

((Max - value) / Max) * (newMax)