2012-03-20 23 views
2

桁区切り文字とすべての末尾の10進数をドイツ語の数字形式で含む文字列形式にdoubleを書式化しようとしています。しかし、私はそれを働かせることはできません(私は本当に愚かなのですか?)。私が欲しいものCで二重に桁区切り文字を追加する#

は以下の通りです:

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

私はすでにNumberFormatsや他のものを使用するが、私は私が欲しいものを得ることはありません。誰か助けてもらえますか?

+0

あなたには、いくつかのユーザーが使用する何かを構築している場合は、それが必要とされる数千人のためにカンマが、千単位の区切りとして小数点、その後分離するコンマはありません –

答えて

9

私はあなたがそれを行うことができるはず期待スレッドの現在の文化でないならば、ドイツ文化。

サンプル:3は、小数点以下の桁数を指定すること

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 
    }     
} 

注意。

+0

小数点以下の桁数が変化していますので、丸めたりトリミングする必要はありません。 – Kai

+2

@flashflail:もしあなたが 'double'を使っているのであれば、*とにかく*を四捨五入することになります。あなたの価値は、*正確に* 123.456789で始まるわけではありません。正確な10進値が必要な場合は、 'decimal'を使用する必要があります。 –

+0

ありがとうございました!これは私を助けた。 – Kai

3

使用この:指定...

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

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

書式設定小数のデフォルトのシステム設定を使用することを検討すべきです小数点以下の桁数 - ドイツ語の書式 – kaj

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(); 
     } 
    } 
}