在C#中用逗号和小数格式化数字(asp.net MVC3)

时间:2013-04-16 11:08:41

标签: c# asp.net-mvc-3 formatting number-formatting

我需要用逗号和小数点显示数字。

例如: 情况1:十进制数是432324(这没有逗号或小数点) 需要将其显示为 432,324.00
但不是432,324

案例2:十进制数是2222222.22(这没有逗号) 需要将其显示为 2,222,222.22

我试过了ToString("#,##0.##")。但它不是格式化它

11 个答案:

答案 0 :(得分:62)

int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");

您将获得结果1,234,567,890.00

答案 1 :(得分:22)

也许您只需要标准格式字符串"N",如

number.ToString("N")

它将使用千位分隔符和固定数量的小数位数。千位分隔符的符号和小数点的符号取决于您使用的格式提供程序(通常为CultureInfo),小数位数(通常为2,根据需要)。

如果格式提供程序指定了不同的小数位数,并且您不想更改格式提供程序,则可以在N之后给出小数位数,如.ToString("N2")中所示。

编辑:逗号之间的组大小由

决定
CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes

数组,假设您没有指定特殊格式提供程序。

答案 2 :(得分:9)

尝试

ToString("#,##0.00")

来自MSDN

*“0”自定义格式说明符用作零占位符符号。如果正在格式化的值在格式字符串中出现零的位置有一个数字,则该数字将复制到结果字符串;否则,结果字符串中会出现零。小数点前最左边的零点和小数点后面最右边的零点的位置决定了结果字符串中始终存在的数字范围。

“00”说明符会将值四舍五入到小数点前面的最近数字,其中始终使用从零开始的舍入。例如,使用“00”格式化34.5将导致值35。*

答案 3 :(得分:7)

我遇到了同样的问题。我想格式化像" General"电子表格中的格式,表示如果它们显着,则显示小数,但如果不是,则将其删除。换句话说:

  

1234.56 => 1,234.56

     

1234 => 1234

它需要支持小数点后的最大位数,但如果不需要则不要设置尾随零或点,当然,它需要文化友好。我从来没有真正找到一个干净的方法来单独使用String.Format,但是String.Format和Regex.Replace的组合以及来自NumberFormatInfo.CurrentInfo的一些文化帮助完成了这项工作(LinqPad C#Program)

string FormatNumber<T>(T number, int maxDecimals = 4) {
    return Regex.Replace(String.Format("{0:n" + maxDecimals + "}", number),
                         @"[" + System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator + "]?0+$", "");
}   

void Main(){
    foreach (var test in new[] { 123, 1234, 1234.56, 123456.789, 1234.56789123 } )
        Console.WriteLine(test + " = " + FormatNumber(test));
}

产地:

123 = 123
1234 = 1,234
1234.56 = 1,234.56
123456.789 = 123,456.789
1234.56789123 = 1,234.5679

答案 4 :(得分:7)

对于Razor View:

$@string.Format("{0:#,0.00}",item.TotalAmount)

答案 5 :(得分:5)

CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)

答案 6 :(得分:3)

你的问题不是很清楚,但这应该达到你要做的目的:

decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");

然后formatted将包含: 3,494,309,432,324.00

答案 7 :(得分:3)

尝试

ToString("#,##0.###")

产地:

  

1234.55678 =&gt; 1,234.556

     

1234 =&gt; 1234

答案 8 :(得分:2)

所需要的只是“#,0.00”,c#完成其余的工作。

Num.ToString(“#,0.00”“)

  • “#,0”格式化千位分隔符
  • “0.00”强制两位小数

答案 9 :(得分:0)

string Mynewcurrency = DisplayIndianCurrency("7743450.00");
        private string DisplayIndianCurrency(string EXruppesformate) 
        { 
        string fare = EXruppesformate;
        decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture);
        CultureInfo hindi = new CultureInfo("en-IN");
     // string text = string.Format(hindi, "{0:c}", parsed);if you want <b>Rs 77,43,450.00</b>
    string text = string.Format(hindi, "{0:N}", parsed); //if you want <b>77,43,450.00</b>
      return ruppesformate = text;
    }

答案 10 :(得分:0)

如果您使用的是字符串变量,则可以直接使用:格式化字符串,然后指定格式(例如N0,P2等)。

decimal Number = 2000.55512016465m;
$"{Number:N}" #Outputs 2,000.55512016465

您还可以通过在末尾添加数字来指定要显示的小数位数

$"{Number:N1}" #Outputs 2,000.5
$"{Number:N2}" #Outputs 2,000.55
$"{Number:N3}" #Outputs 2,000.555
$"{Number:N4}" #Outputs 2,000.5551