2012-03-30 2 views
1

У меня есть список с этими значениями:Что не так в этом списке?

['1', '10', '100.3', '1000.4', '1000.42', '150', '200', '250', '304', '32000', '34'] 

я проверяю, если listvalue является > 100.2 && < 1000.4
и положить значения в новый список.

Это выход:

['1000.4', '1000.42', '150', '200', '250', '304', '400'] 

Что я сделал не так?
Почему 1000.4 и 1000.42 в списке и почему 100.3 нет в списке?

+2

Во-первых, я могу видеть «1000,4» в списке вывода, который вы перепечатали, а не скопировали. Это список, подверженный ошибкам, для повторного ввода. Возможно ли, чтобы вы скопировали из своего кода, включая if-statement и вывод, а не повторно? Я готов поспорить, что ошибка станет очевидной, когда мы увидим скопированный список. –

+0

Я не знаю, как скопировать вывод, но была только одна ошибка. «1000» должно было быть точкой. – Reman

ответ

3

Элементы в списке выглядят как строки для меня, и когда вы конвертируете из строки в число, вы получаете только целую часть. попробуйте :echo '1000.4' + 0.0 например.

Использовать результат str2float(item) для сравнения с числом с плавающей запятой.

Причина в том, что поддержка поплавка не является стандартной, и вам нужен стандартный результат для такой операции, или скрипты будут несовместимы между -float и + float builds.

+0

Не могли бы вы привести пример? Str2float (mylist [i]) не дал решения. – Reman

+1

@Remonn: Попробуйте ': фильтр эха (карта (['1', '10', '100.3', '1000.4', '1000.42', '150', '200', '250', '304', ' 32000 ',' 34 '],' str2float (v: val) '),' v: val> 100.2 && v: val <1000.4 ') ', например. –

Смежные вопросы