我需要显示一个带有逗号和小数点的数字。
例如:
情况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;
number.ToString("#,##0.00");
你将获得结果为1,234,567,890.00
。
number.ToString("#,##0.00")
可以得到相同的结果时,就不需要使用Convert.ToDecimal
。 - Jeppe Stig Nielsen.ToString
方法。其中一个额外的参数是格式提供程序。对于格式提供程序,你可以传递一个文化,如 CultureInfo.InvariantCulture
或者例如 CultureInfo.GetCultureInfo("en-US")
。或者你可以传递一个 NumberFormatInfo
的实例。 - Jeppe Stig Nielsen"N"
,例如:number.ToString("N")
CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes
如果您没有指定特殊的格式提供程序,那么将使用默认格式来显示数组。
试一试
ToString("#,##0.00")
来自 MSDN
*“0”自定义格式规范符用作零占位符号。 如果正在进行格式化的值在格式字符串中的零出现的位置上具有数字,则将该数字复制到结果字符串中; 否则,在结果字符串中出现一个零。 小数点前最左边的零的位置和小数点后最右边的零决定了始终存在于结果字符串中的数字范围。
“00”格式规范符会使得该值四舍五入至小数前面最接近的一位数字,其中始终使用远离零的舍入方式。例如,使用“00”格式化 34.5 将导致值 35。
我曾经遇到过同样的问题,我想要按照电子表格中“常规”格式来显示数字,即在小数部分有意义时显示小数,否则将其截断。换句话说:
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
对于 Razor 视图:
$@string.Format("{0:#,0.00}",item.TotalAmount)
CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)
只需要写"#,0.00",c#会自动完成其余部分。
Num.ToString("#,0.00")
您的问题不是很清楚,但这应该可以实现您想要做的事情:
decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");
formatted
将包含:3,494,309,432,324.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
{0:#,0.##}
- Worthy7ToString("#,##0.#0")
https://dotnetfiddle.net/USmzUL - Nahid