2012-03-20 42 views
2

我試圖將一個double格式化爲包含數千個分隔符和所有德文數字格式的尾隨小數的字符串格式。但我無法實現它(我真的很愚蠢?)。在c中添加千位分隔符以加倍#

我想是這樣的:

Input: double doubleVal = 123456.789; 
Output: 123.456,789 

我已經使用NumberFormats和其他的東西,但我沒有得到我想要的東西。有人可以幫忙嗎?

+0

如果你正在構建的東西,有些用戶會使用你應該考慮使用默認系統設置小數格式 – 2012-03-20 08:22:00

回答

9

我期望你應該能夠做到這一點的:

string text = value.ToString("N"); 

...指定德國文化,如果它不是線程的當前文化。

樣品:

using System; 
using System.Globalization; 

class Test 
{ 
    static void Main() 
    { 
     double d = 123456.789; 
     CultureInfo culture = CultureInfo.CreateSpecificCulture("de-DE"); 

     Console.WriteLine(d.ToString("N3", culture)); // 123.456,789 
    }     
} 

注意,3指定的小數點後的位數。

+0

好的,但小數點後的位數正在改變,我不想舍入或修剪。 – Kai 2012-03-20 08:27:07

+2

@flashflail:如果你使用'double',則無論如何你都會變得圓滑或者修剪。您的價值不是*完全* 123.456789開始。如果你想精確的小數值,你應該使用'decimal'。 – 2012-03-20 08:28:55

+0

謝謝大家!這幫助了我。 – Kai 2012-03-20 11:46:36

3

使用此:

string s = String.Format("{0:0,0.000}", 123456.789); 
+0

這不是逗號爲所需成千上萬,但小數點作爲千位分隔符,然後將逗號分隔小數點後的整數值 - 德國數字格式 – kaj 2012-03-20 08:31:41

1
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Globalization; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      double d = 123456.789; 
      CultureInfo ci = new CultureInfo("de-DE");       
      Console.WriteLine(d.ToString("N",ci)); 
      Console.ReadLine(); 
     } 
    } 
}