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

问题描述 投票:30回答:11

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

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

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

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

c# asp.net-mvc-3 formatting number-formatting
11个回答
71
投票
int number = 1234567890;
Convert.ToDecimal(number).ToString("#,##0.00");

你会得到结果1,234,567,890.00


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

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

25
投票

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

number.ToString("N")

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

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

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

CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes

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


9
投票

试试吧

ToString("#,##0.00")

来自MSDN

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

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


8
投票

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

1234.56 => 1,234.56

1234 => 1,234

它需要支持小数点后的最大位数,但如果不需要则不要设置尾随零或点,当然,它需要文化友好。我从来没有真正找到一个干净的方法来单独使用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

7
投票

对于Razor View:

[email protected]("{0:#,0.00}",item.TotalAmount)

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

3
投票

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

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

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


3
投票

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

Num.ToString( “#0.00”“)

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

3
投票

试试吧

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

生产:

1234.55678 => 1,234.556

1234 => 1,234

© www.soinside.com 2019 - 2024. All rights reserved.