Мне было интересно, как установить вес для вычисления огромных разных значений. Я постараюсь объяснить это лучше, или, может быть, в деталях.
Идея такова: я хотел бы получить в результате значение в этом диапазоне [1,20]: 1) первое значение: a 1a) с форматом вроде 0,1 или 0,0001 или 0,00001 и т. д. 1b) максимальная десятичная длина = 5 десятичные знаки 2) второе значение: b 2a) предположение, что меньше, чем a (если a=0,01, по крайней мере, b=0,00999 и т. д.) 2b) с тем же форматом 2c) максимальная десятичная длина = 6 знаков после запятой (на 1 больше, чем a)
где, например, a=0,01 и b=0,0001
x = a/b = 100
второй пример a=0,01 и b=0,00001
x = a/b = 1000
Я подумал примерно так: если максимум может быть (когда a=0,1 и b=0,000001) = 100000, то он соответствует 20 (новая максимальная шкала), и если я посчитаю разницу количества десятичных знаков, я могу сказать, что: a' имеет 1 десятичный знак 'b' имеет 6 десятичных знаков. В общем, у нас может быть максимальная разница в 5, поэтому:
max = 5
Итак, используя это исчисление:
diff=6-1=5
чтобы их доля (a/b) соответствовала максимальному значению (20), я могу сделать: (diff*20)/max
дайте мне 20. Это нормально. Теперь, если у меня есть a = 0,1 и b = 0,000002, я могу использовать наименее значимое число «b» (в данном случае «2» из 0,000002) и сравнить с наименее значимым из «a», и я могу сказать, что
diff=6-1=5
Теперь вычтите 0,2 (поскольку наименее значимое число было 2), чтобы получить 4,8. Теперь пересчитаем:
4.8*20/max = 19.2
Таким образом, для 0,1 и 0,000003 будет
diff=6-1=5
diff=diff-0.3 = 4.7
4.7*20/max = 18.8
И так далее.
Проблема в том, что когда у меня есть a=0,3 и b=0,0002 (например), я не знаю, как с этим справиться.
Может ли кто-нибудь предложить мне решение или кучу этого, даже с псевдокодом или процедурой? Возможно, я сам сделаю перевод на java.
Я не знаю, куда написать свой вопрос, если да, то я действительно извиняюсь, если я ошибаюсь в некоторых правилах этого сайта, в остальном все в порядке :-) Всем спасибо
x
- ваш ответ? Вы пытаетесь зажать/масштабироватьx
, чтобы он соответствовал диапазону? - person   schedule 14.11.2015