首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动单位转换?

自动单位转换?
EN

Stack Overflow用户
提问于 2013-02-25 21:05:55
回答 2查看 142关注 0票数 1

有没有可以进行自动单位转换的软件包?为了显示而搜索最佳单位的东西。

例如,当我的数字为0.000001m时,它输出1µm?

或0.000000001m到1 nm

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-27 02:42:41

让我们看看我们可以用一个简单的递归方法实现什么。

代码语言:javascript
复制
class Numeric
  def choose_best_scale(prefix = nil)
    if abs >= 1e2
      (self / 1e3).choose_best_scale next_prefix(prefix)
    elsif abs <= 1e-2
      (self * 1e3).choose_best_scale prev_prefix(prefix)
    else
      [self, prefix]
    end
  end

  private

  SIPrefixes = [:n, :μ, :m, :k, :M, :G]

  def prev_prefix(prefix)
    return :m if prefix.nil?
    SIPrefixes[SIPrefixes.index(prefix) - 1]
  end

  def next_prefix(prefix)
    return :k if prefix.nil?
    SIPrefixes[SIPrefixes.index(prefix) + 1]
  end
end

这是它在实践中是如何工作的。

代码语言:javascript
复制
pry(main)> (-6..6).map { |x| (10.0 ** x).choose_best_scale }
=> [[1.0, :μ],
    [10.0, :μ],
    [0.1, :m],
    [1.0, :m],
    [10.0, :m],
    [0.1, nil],
    [1.0, nil],
    [10.0, nil],
    [0.1, :k],
    [1.0, :k],
    [10.0, :k],
    [0.1, :M],
    [1.0, :M]]
票数 1
EN

Stack Overflow用户

发布于 2013-02-25 21:09:57

虽然我不确定,但也许这会有帮助

http://ruby-units.rubyforge.org/ruby-units/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15067677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档