每次遇到單位換算是不是頭很痛? 要上網查然後再寫一堆常數,例如 °C 到 °F 是 °C *9/5 + 32 ,既繁瑣又容易出錯。不過筆者最近找到了一個套件,專門用來做單位換算,光溫度(Temperature)就有 10 種,其他還有包含角度(Angle)、重量(Mass)、電流(ElectricCurrent)、體積(Volume)、功率(Power)、壓力(Pressure)、速度(Speed)、加速度(Acceleration)、能量(Energy)、電荷(ElectricCharge)...等,非常的實用,還有一堆筆者不知道的單位都在上面。
輸出內容為字串,包含 °C 或 °F 字樣。
要先轉換為溫度的增量才能相加,可以使用 TemperatureDelta.FromDegreesCelsius ,或是直接減去 0 (不能使用 +)
參考資料:
Github - angularsen/UnitsNet
安裝
先使用 NuGet 安裝 UnitsNet 套件,或是使用 .NET CLI 執行以下指令安裝
dotnet add package UnitsNet
溫度換算
前面提到溫度就有 10 種,這裡就舉例華氏和攝氏溫度轉換:
Temperature temperature = Temperature.FromDegreesCelsius(28);
Console.WriteLine(temperature); // 28 °C
Temperature f = temperature.ToUnit(TemperatureUnit.DegreeFahrenheit);
Console.WriteLine(f); // 82.4 °F
Console.WriteLine(f.ToUnit(TemperatureUnit.DegreeCelsius)); // 28 °C
輸出內容為字串,包含 °C 或 °F 字樣。
溫度相加
Temperature 並不能直接相加,會出現下面的例外:
Cannot apply operator '+' to operands of type 'UnitsNet.Temperature' and 'UnitsNet.Temperature', candidates are: UnitsNet.Temperature operator +(UnitsNet.Temperature, UnitsNet.TemperatureDelta) (in struct Temperature) UnitsNet.Temperature operator +(UnitsNet.TemperatureDelta, UnitsNet.Temperature) (in struct Temperature)
要先轉換為溫度的增量才能相加,可以使用 TemperatureDelta.FromDegreesCelsius ,或是直接減去 0 (不能使用 +)
TemperatureDelta temp1AsDelta = TemperatureDelta.FromDegreesCelsius(20);
TemperatureDelta temp2AsDelta = Temperature.FromDegreesCelsius(10) - Temperature.FromDegreesCelsius(0);
TemperatureDelta temp3AsDelta = temp1AsDelta - temp2AsDelta;
Console.WriteLine(temp3AsDelta); // 10 °C
Temperature temp = Temperature.FromDegreesCelsius(0) + temp3AsDelta;
Console.WriteLine(temp.ToUnit(TemperatureUnit.DegreeCelsius)); // 10 °C
參考資料:
Github - angularsen/UnitsNet
留言
張貼留言
如果有任何問題或建議,都歡迎留言或來信: a@ruyut.com