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

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

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

情况2:十进制数是2222222.22(这没有逗号)需要显示为2,222,222.22

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

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

您将得到1,234,567,890.00的结果。

也许你只是想要标准格式字符串"N" ,如

 number.ToString("N") 

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

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

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

 CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes 

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

试试吧

 ToString("#,##0.00") 

来自MSDN

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

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

对于Razor View:

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

我有同样的问题。 我想格式化电子表格中的“常规”格式的数字,这意味着如果它们很重要则显示小数,但如果没有,则将其删除。 换一种说法:

1234.56 => 1,234.56

1234 => 1,234

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

 string FormatNumber(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 
 CultureInfo us = new CultureInfo("en-US"); TotalAmount.ToString("N", us) 

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

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

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

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

Num.ToString( “#0.00”“)

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

试试吧

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

生产:

1234.55678 => 1,234.556

1234 => 1,234

 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 Rs 77,43,450.00 string text = string.Format(hindi, "{0:N}", parsed); //if you want 77,43,450.00 return ruppesformate = text; }