将范围内的数字转换为另一范围内的数字

Per*_*ert 11 c# math scaling

可能重复:
将数字范围转换为另一个范围,保持比率

所以我有一个函数返回0和255之间的值,我需要将这些值转换为介于-255和255之间的值所以200大约是145,150大约是45,依此类推..我看过转换一个数字范围到另一个范围,保持比例,但公式不起作用.我可以使用的任何其他公式?

Wim*_*nen 35

public static int ConvertRange(
    int originalStart, int originalEnd, // original range
    int newStart, int newEnd, // desired range
    int value) // value to convert
{
    double scale = (double)(newEnd - newStart) / (originalEnd - originalStart);
    return (int)(newStart + ((value - originalStart) * scale));
}
Run Code Online (Sandbox Code Playgroud)


Jim*_*ell 4

尝试这个:

int Adjust( int num )
{
    return num * 2 - 255;
}
Run Code Online (Sandbox Code Playgroud)