Преобразовать число в дробь указанного диапазона - PullRequest
0 голосов
/ 04 ноября 2019

Так что я ищу какой-нибудь умный способ конвертировать любое число в дробь. Мне нужно добиться этого:

0.0001 >= my_number >= 0.00001

проблема в том, что my_number может иметь вид:

194619.98341

, а также:

0.00231134

(примеры), поэтомувозможно, это любое число больше 0. Я изо всех сил пытаюсь создать функцию, которая будет преобразовывать ее, чтобы она принадлежала указанному диапазону.

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Если у вас есть список чисел, и вы хотите, чтобы все они были включены в указанный диапазон, вы можете сделать следующее:

def scale(numbers, low_bound, high_bound):
    return [(x - min(numbers)) / (max(numbers) - min(numbers)) * (high_bound - low_bound) + low_bound for x in numbers]

Теперь, если вы это сделаете:

list = [1209.76671, 0.9831, 0.000009873, 123]
scale(list, 0.00001, 0.0001)

# which gives:
# [0.0001, 1.0073136507576801e-05, 1e-05, 1.9150523907020985e-05]

Обратите внимание, что это всегда будет устанавливать минимум списка чисел на 0,00001 и всегда устанавливать максимум на 0,0001.

Теперь я не знаю, отвечает ли это на ваш вопрос, поэтому, пожалуйста, скажите мне, если яЯ ошибаюсь в интерпретации вашего вопроса ...

0 голосов
/ 04 ноября 2019

оказывается, это было не так сложно:

if x > 0.00001:
    while not 0.0001 >= x >= 0.00001:
        x = x / 10
else:
    while not 0.0001 >= x >= 0.00001:
        x = x * 10
...