Para agregar otra respuesta genérica.
Si desea asignar el rango lineal [A..B] a [C ..D], que se pueden aplicar los siguientes pasos:
desplazar el rango de modo que el límite inferior es 0. (subract A de ambos límites:
[A..B] -> [0..B-A]
Escala el rango de lo que es [0..1] . (divide por el límite superior):
[0..B-A] -> [0..1]
Escala de la gama por lo que tiene la longitud de la nueva gama que es DC (multiplicar con DC):.
[0..1] -> [0..D-C]
Shift la gama por lo que el límite inferior es C. (añadir C a los límites):
[0..D-C] -> [C..D]
Combinando esto a una sola fórmula, obtenemos:
(D-C)*(X-A)
X' = ----------- + C
(B-A)
En su caso, A = 0,5 , B = 1, C = de 0, D = 1 se obtiene:
(X-0.5)
X' = ------- = 2X-1
(0.5)
Nota, si tiene que convertir una gran cantidad de X a X', se puede cambiar la fórmula a:
(D-C) C*B - A*D
X' = ----- * X + ---------
(B-A) (B-A)
También es interesante echar un vistazo a los rangos no lineales. Puede seguir los mismos pasos, pero necesita un paso adicional para transformar el rango lineal en un rango no lineal.
Supongo que los + votos fueron dirigidos exclusivamente a "estado trabajando durante las últimas 24 horas seguidas" :) – Michael