如何在Ruby中对浮点数组进行排序?
只是想知道如何在Ruby中对浮点数组进行排序,因为“sort”和“sort!”只适用于整数数组 您可以对浮点数组进行排序,而不会出现任何问题,如:如何在Ruby中对浮点数组进行排序?,ruby,Ruby,只是想知道如何在Ruby中对浮点数组进行排序,因为“sort”和“sort!”只适用于整数数组 您可以对浮点数组进行排序,而不会出现任何问题,如: irb(main):005:0> b = [2.0, 3.0, 1.0, 4.0] => [2.0, 3.0, 1.0, 4.0] irb(main):006:0> b.sort => [1.0, 2.0, 3.0, 4.0] 浮点数数组当然可以排序: >> [6.2, 5.8, 1.1, 4.9, 13.4].
irb(main):005:0> b = [2.0, 3.0, 1.0, 4.0]
=> [2.0, 3.0, 1.0, 4.0]
irb(main):006:0> b.sort
=> [1.0, 2.0, 3.0, 4.0]
浮点数数组当然可以排序:
>> [6.2, 5.8, 1.1, 4.9, 13.4].sort
=> [1.1, 4.9, 5.8, 6.2, 13.4]
也许你的数组中有一个
nil
,它不能与任何东西排序。也许你的数组中有类似的东西,但你没有注意到:
[1.0 , 3.0, 0/0, ...]
0/0
将为您提供一个NaN
,这是无法与浮点进行比较的。。。在这种情况下,你应该试着
[2.3,nil,1].compact.sort
# => [1,2.3]
1.0/0
产生无穷大的错误(但这个错误是由ruby检测到的)这两种方法都适用于浮点数,或者浮点数与整数混合。您确定没有其他问题吗?也许您应该在看到此问题的地方显示一些代码。谢谢。我有一个NaN,因此我得到了:in‘sort’:Float与Float的比较失败(ArgumentError),但可能建议对这个主题进行更多说明(我花了一段时间才意识到),很高兴你发布了这个答案。这正是我遇到的问题,其他答案并不能很好地说明发生了什么。