我需要用逗号和小数点显示一个数字。
例如:案例 1:十进制数是 432324(这没有逗号或小数点)。
需要显示为:432,324.00。
不是:432,324
案例 2:十进制数是 2222222.22(这没有逗号)。
需要显示为:2,222,222.22
我试过ToString("#,##0.##")
了,但它的格式不正确。
我需要用逗号和小数点显示一个数字。
例如:案例 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
数组,假设您没有指定特殊的格式提供程序。
我有同样的问题。我想像电子表格中的“常规”格式那样格式化数字,这意味着如果它们很重要则显示小数,但如果不重要则将它们去掉。换句话说:
1234.56 => 1,234.56
1234 => 1,234
它需要支持小数点后的最大位数,但如果不需要,不要在尾随零或点,当然,它需要文化友好。我从来没有真正想出单独使用String.Format的干净方法,但是 String.Format 和Regex.Replace的组合以及NumberFormatInfo.CurrentInfo的一些文化帮助完成了这项工作(LinqPad C# 程序)。
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
尝试
ToString("#,##0.###")
产生:
1234.55678 => 1,234.556
1234 => 1,234
尝试
ToString("#,##0.00")
来自 MSDN
*“0”自定义格式说明符用作零占位符符号。如果正在格式化的值在格式字符串中出现零的位置有一个数字,则该数字将复制到结果字符串中;否则,结果字符串中将出现零。小数点前最左边的零和小数点后最右边的零的位置决定了结果字符串中始终存在的数字范围。
“00”说明符使值四舍五入到小数点前最接近的数字,其中始终使用从零开始的四舍五入。例如,使用“00”格式化 34.5 将产生值 35。*
对于剃刀视图:
$@string.Format("{0:#,0.00}",item.TotalAmount)
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"")
如果您使用字符串变量,您可以直接使用:
然后指定格式(例如 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
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;
}
对于现在正在查看此内容并在使用时获得“方法 'ToString' 没有重载需要 1 个参数”的任何人:
TotalNumber.ToString("N")
我的解决方案是使用:
TotalNumber.Value.ToString("N")
当直接在 MVC 视图中工作时,我经常会遇到这个问题,以下方法不起作用:
@Model.Sum(x => x.Number).ToString("N")
而这有效:
@Model.Sum(x => x.Number).Value.ToString("N")