Я читаю, обрабатываю и подгоняю некоторые данные, которые были собраны при разных температурах.Для каждого набора измеренная температура немного колеблется, поэтому я сгруппировал результаты по средним значениям температуры.Затем я прошу пользователя выбрать интересующие температуры (например, отменить шумные) через raw_input и использовать эти индексы для определения местоположения данных, которые будут установлены.Проблема состоит в том, что усредненные числа с плавающей точкой и числа, указанные пользователем, используют разные представления и поэтому не могут сравниваться (см. Python - округление числа до 2 цифр ).
Ниже приведен примериз того, что делает мой код:
# Example of temperatures on my data set
T = [25.99545, 25.99702, 25.9982, 25.99859, 25.9986, 25.99899, 25.99899, 25.99899, 25.99899, 25.99899, 25.99899, 25.99938, 25.99938, 26.00016, 26.00056, 26.00056, 26.00056, 26.00056, 26.00056, 26.00095, 26.00095, 26.00095, 26.00134, 26.00134, 26.00134, 26.00174, 26.00213, 26.00252, 27.998, 27.99846, 27.99846, 27.99891, 27.99891, 27.99891, 27.99935, 27.99935, 27.99936, 27.9998, 27.9998, 27.9998, 27.99981, 27.99981, 28.00025, 28.00025, 28.00026, 28.00026, 28.0007, 28.0007, 28.0007, 28.0007, 28.00114, 28.00115, 28.00115, 28.00115, 28.00204, 28.00249, 29.99771, 29.99822, 29.99822, 29.99822, 29.99873, 29.99873, 29.99873, 29.99923, 29.99923, 29.99924, 29.99974, 29.99974, 29.99975, 29.99975, 29.99975, 30.00026, 30.00026, 30.00026, 30.00026, 30.00076, 30.00076, 30.00127, 30.00127, 30.00178, 30.00178, 30.00178, 30.00229, 30.00229, 31.99801, 31.99858, 31.99858, 31.99858, 31.99858, 31.99858, 31.99916, 31.99916, 31.99916, 31.99916, 31.99973, 32.00029, 32.0003, 32.0003, 32.0003, 32.0003, 32.0003, 32.00086, 32.00086, 32.00087, 32.00087, 32.00143, 32.00143, 32.00143, 32.002, 32.00201, 32.00257, 32.00372 ]
av_T = [ 25.999885000000003, 28.000059642857156, 30.000000357142863, 32.000254285714284 ] # Average of temperatures
rounded_T = [ round(x,2) for x in av_T ]
selected_T = [ 26.0, 30.0 ] # User selection of temperatures
if selected_T not in rounded_T: # Check the user indicates valid temperatures
print('The selected temperature is not in your experimental set')
exit()
Поскольку их представление невозможно сравнить, мой код всегда застревает на этом этапе.Также обратите внимание, что даже если я не округляю av_T и
selected_T = [ 25.999885000000003, 30.000000357142863 ]
, я получаю такое же поведение.Есть ли способ сделать это сравнение, не прибегая к десятичной точности?