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. Python中的單位換算
- 2. 單位換算的問題
- 3. MPAndroidChart可以自動轉換單位嗎?
- 4. 文本自動換算
- 5. 開放式換檔自動換算
- 6. 使用Javascript進行單位換算
- 7. 單位換算! Ghz - ns - MHz - cycles
- 8. 從英尺到米的單位換算
- 9. 自動錶單定位
- 10. 串換位算法
- 11. 遞歸自動換行算法
- 12. GPU計算單位?
- 13. 位運算,移動進位
- 14. 簡單的JavaScript單位轉換器和計算器
- 15. 使用Swift自動計算單元格
- 16. 自動錶單提交和計算
- 17. 將自然數轉換爲三位字符串的簡單算法是什麼?
- 18. 用位運算符替換「!=」
- 19. 自動增量與單位工作
- 20. 自動計算
- 21. sympy單位轉換
- 22. 轉換單位,Java
- 23. CGContextRef單位轉換
- 24. Java簡單按位運算
- 25. 單位 - 計算性能
- 26. 電單位計算器
- 27. 單位sgp4軌道計算
- 28. 元爲單位的運算
- 29. NSDate單位和計算
- 30. 使用jQuery計算插件自動計算表單字段值
嗯,爲什麼'0.000001'應該變成1微米,而不是'1微克?你認爲圖書館應該知道你知道米嗎? – mudasobwa 2013-02-25 14:24:07
好吧,你應該可以告訴源單元 – madmax 2013-02-26 07:15:33