【问题标题】:What is wrong with this list?这个清单有什么问题?
【发布时间】:2012-03-30 17:40:34
【问题描述】:

我有一个包含这些值的列表:

['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 不在列表中?

【问题讨论】:

  • 首先,我可以通过输出列表中的“1000,4”看到您重新键入而不是复制。这是一个需要重新输入的容易出错的列表。您是否可以从代码中复制,包括 if 语句和输出而不是重新输入?我敢打赌,当我们看到复制的列表时,错误会变得很明显。
  • 我不知道如何复制输出,但只有一个错误。 1000,4 中的 ',' 必须是一个点。

标签: string list function vim numbers


【解决方案1】:

列表中的项目在我看来就像字符串,当您从字符串转换为数字时,您只能得到整数部分。以:echo '1000.4' + 0.0 为例。

使用str2float(item) 的结果与浮点数进行比较。

原因是浮动支持不是标准的,您需要一个标准的结果来执行这样的操作,否则 -float 和 +float 构建之间的脚本将不兼容。

【讨论】:

  • 你能举个例子吗? Str2float(mylist[i]) 没有给出解决方案。
  • @Remonn:例如,试试:echo filter(map(['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')
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 2021-08-20
  • 2015-09-23
  • 2021-02-27
  • 2012-03-10
相关资源
最近更新 更多