在C#中格式化带点和小数的数字

时间:2014-04-18 14:30:11

标签: c# asp.net

我首先需要。(点)然后是逗号(,)。

喜欢,1234567这是一个示例数字或金钱 我想要它像1.234.567,00 任何人都可以给我一个答案。

3 个答案:

答案 0 :(得分:5)

如果执行代码的计算机上的区域性设置符合您的意愿,您可以简单地使用ToString重载:

    double d = 1234567;
    string res = d.ToString("#,##0.00");  //in the formatting, the comma always represents the group separator and the dot the decimal separator. The format part is culture independant and is replaced with the culture dependant values in runtime.

如果显示必须与文化无关,则可以使用特定的数字格式:

 var nfi = new NumberFormatInfo { NumberDecimalSeparator = ",", NumberGroupSeparator = "." };
    double d = 1234567;
    string res = d.ToString("#,##0.00", nfi); //result will always be 1.234.567,00

答案 1 :(得分:3)

这看起来像外币格式。根据您的真实需要,可能有多种方法。以下MSDN链接为您提供完整的文档:

http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx#CFormatString

一个有效的例子如下:

        string xyz = "1234567";

        // Gets a NumberFormatInfo associated with the en-US culture.
        NumberFormatInfo nfi = new CultureInfo("en-US", false).NumberFormat;

        nfi.CurrencyDecimalSeparator = ",";
        nfi.CurrencyGroupSeparator = ".";
        nfi.CurrencySymbol = "";
        var answer = Convert.ToDecimal(xyz).ToString("C3", 
              nfi);

xyz = 1.234.567,000

答案 2 :(得分:0)

您也可以动态更改应用程序的文化。如果您查看Formatting Numeric Data for a Specific Culture,并查看标记为“为欧洲国家格式化货币”的部分,它将详细说明如何执行此操作。

基本上,您需要使用以下方式更改文化:

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

然后您可以使用.ToString()方法,将“c”作为参数传递,表示您希望将字符串格式化为当前文化的货币:

double d = 1234567;
string converted = d.ToString("c");

这应该会给你你想要的东西。如果您不想要欧洲风格的数字用于您正在使用的所有内容,请确保重新设置文化。