我想对一组数字(以科学记数法)从小到大进行排序。
这是我尝试过的(徒劳的):
require 'bigdecimal'
s = ['1.8e-101','1.3e-116', '0', '1.5e-5']
s.sort { |n| BigDecimal.new(n) }.reverse
# Results Obtained
# => [ "1.3e-116", "1.8e-101", "0", "1.5e-5" ]
# Expected Results
# => [ "0", "1.3e-116", "1.8e-101", "1.5e-5"]
最佳答案
Enumerable#sort
block 预计返回-1
、0
或1
。你要的是Enumerable#sort_by
:
s.sort_by { |n| BigDecimal.new(n) }
# => ["0", "1.3e-116", "1.8e-101", "1.5e-5"]
关于ruby - 以科学计数法对数字数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33938271/