Q
自动单位换算?
1
A
回答
1
让我们来看看,我们可以用一个简单的递归方法实现。
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
下面是它在实践中的工作原理。
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]]
3
相关问题
- 1. 单位换算的问题
- 2. Python中的单位换算
- 3. MPAndroidChart可以自动转换单位吗?
- 4. 开放式换档自动换算
- 5. 使用Javascript进行单位换算
- 6. 单位换算! Ghz - ns - MHz - cycles
- 7. 自动表单定位
- 8. 串换位算法
- 9. 递归自动换行算法
- 10. 位运算,移动进位
- 11. 自动增量与单位工作
- 12. 自动计算
- 13. CGContextRef单位转换
- 14. 转换单位,Java
- 15. 单位 - 计算性能
- 16. 电单位计算器
- 17. Java简单按位运算
- 18. NSDate单位和计算
- 19. 使用jQuery计算插件自动计算表单字段值
- 20. 单元格中的dataTables自动换行
- 21. 订单自动换@Repeatable注释
- 22. 将InfoPath表单自动转换为PDF
- 23. 单击UISwitch时关闭自动切换?
- 24. 自动SQL计算
- 25. Javascript自动计算
- 26. 自动计算表
- 27. 你如何建立单位换算表格?
- 28. 如何使用数据的注释做单位换算在WPF
- 29. 计算滚动条位置
- 30. 基于单选按钮的jQuery自动计算单击
嗯,为什么'0.000001'应该变成1微米,而不是'1微克?你认为图书馆应该知道你知道米吗? – mudasobwa 2013-02-25 14:24:07
好吧,你应该可以告诉源单元 – madmax 2013-02-26 07:15:33