因此,我正在寻找一种将任何数字转换为分数的巧妙方法。我需要实现这一点:
0.0001 >= my_number >= 0.00001
问题在于my_number可能为:
194619.98341
以及:
0.00231134
(示例),因此它可能是大于0的任何数字。我在努力创建一个函数来对其进行转换,因此该函数属于指定范围。
如果您有一个数字列表,并且希望将它们全部包含在此指定范围内,则可以执行以下操作:
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。
现在,我不知道这是否能回答您的问题,所以请告诉我我在解释您的问题时是否被误解了...
,原来并不难:
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