簡體   English   中英

雙精度字符串,僅帶小數點后一位

[英]Double to string with culture and only one decimal place

將雙精度型轉換為字符串並四舍五入到小數點后一位時,我需要保持文化。

用文化將雙精度轉換為字符串:

((12275454.8).ToString("N", new CultureInfo("sl-SI")));

給出輸出:

12.275.454,80

將double轉換為只有一個小數的字符串:

string.Format("{0:F1}",12275454.8)

給出輸出:

12275454.8

第二個輸出沒有區域性,第一個輸出沒有四舍五入到小數點后一位。 如何結合兩種方法?

僅在第一個示例中使用第二個示例的格式字符串,即:

((12275454.8).ToString("N1", new CultureInfo("sl-SI")));

編輯:根據要求將格式從F1更改為N1。 兩者之間的區別在於N額外使用了數千個分隔符,而F則沒有。 有關詳細信息,請參見https://msdn.microsoft.com/zh-CN/library/dwhawy9k(v=vs.110).aspx

您可以將"sl-SI"區域性設置為默認區域性:

 using System.Threading;

 ...

 Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sl-SI");

 string test = string.Format("{0:F1}",12275454.8);

如果只希望"sl-SI"區域性代碼塊,請添加try..finally

var savedCulture = Thread.CurrentThread.CurrentCulture;

try {
  Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sl-SI");

  // Let's work with "sl-SI" for a while  
  string test = string.Format("{0:F1}",12275454.8);
  ...
}
finally {
  Thread.CurrentThread.CurrentCulture = savedCulture;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM