2015-09-18 32 views
1

我試圖創建一個通用的規範字符串發生器,它可以格式化到任意數量的小數位,即「溫度必須在20.5℃至40.0 C」,「溼度必須在15%至85%」,‘進氣口壓力必須ATM 2.25至2.75 ATM’等使用嵌套數字格式化C#的String.Format

現在,我做這工作的下面,但我覺得它可以簡化。

public static string SpecToString(double minimum, double maximum, int digits) 
{ 
    string numberFormatMin = "{0:f" + digits + "}"; 
    string numberFormatMax = "{1:f" + digits + "}"; 

    return String.Format(numberFormatMin + " to " + numberFormatMax, minimum, maximum); 
} 

有沒有反正String.Format「嵌套」參數如下?因爲它會引發一個異常,輸入字符串不是正確的格式。

public static string SpecToString2(double minimum, double maximum, int digits) 
{ 
    return String.Format("{0:f{2}} to {1:f{2}}", minimum, maximum, digits); 
} 
+0

的東西都應該儘可能簡單,可以使用兩個String.Format電話。不簡單。 –

+0

您可以強制客戶端提供四捨五入的值。 –

+0

這些值以參考計量單位存儲在數據庫中。然後它們可以被轉換,即壓力,bar,PSI,ATM,Torr,所有這些都會顯示不同的小數位。 –

回答

0

如果你發現「更簡單」

var temp = string.Format("{{0:f{0}}} to {{1:f{0}}}", digits); 
return string.Format(temp, minimum, maximum);