我在我的程序中添加了一項功能,用戶可以隨時更改其度量單位,並讓程序重新計算其輸入和輸出。C#中的度量單位轉換邏輯
如果用戶輸入一個項目20磅,然後決定他想以千克爲單位工作,他可以隨時選擇一個選項來執行此操作,程序將重新計算他的20磅輸入爲9公斤。那麼如果他決定他寧願在盎司工作,它會將9Kg轉換爲320oz,等等。
什麼是最有效和最有效的方法呢?我一直在努力尋找一種方法來實現正確的公式。
我在我的程序中添加了一項功能,用戶可以隨時更改其度量單位,並讓程序重新計算其輸入和輸出。C#中的度量單位轉換邏輯
如果用戶輸入一個項目20磅,然後決定他想以千克爲單位工作,他可以隨時選擇一個選項來執行此操作,程序將重新計算他的20磅輸入爲9公斤。那麼如果他決定他寧願在盎司工作,它會將9Kg轉換爲320oz,等等。
什麼是最有效和最有效的方法呢?我一直在努力尋找一種方法來實現正確的公式。
以標準單位(或您喜歡使用的單位)進行所有計算。
只有用戶界面需要關心單位轉換。其餘代碼不需要擔心。
在內部存儲已知測量單位的值(例如,以千克爲單位存儲所有數據)並且有方程可以將已知單位轉換爲其他所有單位。
基本上你只需要轉換顯示單位,所有的內部計算都可以在一個單元中完成。
作爲一個弧線球,F#有一個強大的計量單位機制內置的,如果你看中的東西尖端一起玩......
在,我已經下了「單位」上,我們有單獨的類工作程序命名空間,如Units.Torque或Units.Length。
如果您創建一個像Units.Weight這樣的類,並將所有轉換因子設置爲常量值,將可能的單位設置爲枚舉,則可以調用該類並將其轉換爲所需的單位。這是我們使用的系統的一個非常簡單的例子:
namespace Units
{
class Weight
{
public enum WeightType
{
kg,
lb
}
const double kgTolbs = 2.20462262;
public static double Convert(double value, WeightType fromUnits, WeightType toUnits)
{
//Code here to convert units
}
}
}
有了這個結構,你可以轉換爲和從任何單位類型在您的休閒。
我同意。不要從以前的單位轉換,你會失去精度。 – 2010-05-07 21:15:44
......否則你的着陸器將會超調並飛入太空或在輝煌的火球中撞擊地面! ;) – FrustratedWithFormsDesigner 2010-05-07 21:16:51
我建議使用SI單位來存儲數據庫中的信息(或者存儲數據的任何內容)。 – msarchet 2010-05-07 21:16:52