ruby - 以科学计数法对数字数组进行排序

标签 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"]

最佳答案

Enumerable#sort block 预计返回-101。你要的是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/

相关文章:

excel - 如何按第一列对每个新工作表中的新数据进行排序?

ruby - 从按哈希值排序的哈希中获取键数组

c# - float 中的E是什么?

ruby - 我如何在 Heroku 上使用 rdiscount?

ruby-on-rails - ruby 洗牌!数组中的每个数组

c++ - 如何在 ASC 和 DESC 模式下对 C++ 数组进行排序?

16 进制的 Swift 科学记数法

MongoDB将数字转换为科学计数法的字符串

ruby - 如何在 Ruby 中使用散列键进行这些字符串替换?

ruby SSL 代理(MITM)