Проблема состоит в основном в том, что двойной/плавающий поддерживаются в аппаратных средствах, в то время как Десятичное число и т.п. не. Т.е. необходимо выбрать между скоростью + ограниченная точность и большей точностью + более плохая производительность.
То, что вы описываете, называется линейной интерполяцией .
В общем случае предположим, что у вас есть значение c
между a
и b
, и вам нужно значение x
между 0 и 1, которое основано на относительном положении c
между a
и b
. Уравнение для x
выглядит следующим образом:
x := (c - a) / (b - a)
Итак, если у вас есть значение от 10 до 15 (скажем, 11), и вам нужно значение от 0 до 1, вы вводите значения в уравнение выше:
x := (11 - 10) / (15 - 10)
x := 1/5
Другими словами, 11 составляет пятую часть пути от 10 до 15.