用科学记数法排序数字数组

Ism*_*hul 4 ruby sorting scientific-notation

我想从最小到最高排序一系列数字(科学记数法).

这是我试过的(徒劳):

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"]
Run Code Online (Sandbox Code Playgroud)

Yu *_*Hao 11

该区块Enumerable#sort预计将返回-1,01.你想要的是Enumerable#sort_by:

s.sort_by { |n| BigDecimal.new(n) }
# => ["0", "1.3e-116", "1.8e-101", "1.5e-5"]
Run Code Online (Sandbox Code Playgroud)