使用C#中的逗号和小数格式化数字(asp.net MVC3)
我需要显示一个带有逗号和小数点的数字 例如: 案例1:十进制数为432324(没有逗号或小数点) 需要将其显示为432324.00使用C#中的逗号和小数格式化数字(asp.net MVC3),c#,asp.net-mvc-3,formatting,number-formatting,C#,Asp.net Mvc 3,Formatting,Number Formatting,我需要显示一个带有逗号和小数点的数字 例如: 案例1:十进制数为432324(没有逗号或小数点) 需要将其显示为432324.00 但不是432324 案例2:十进制数是22222.22(没有逗号) 需要将其显示为2222222 我尝试了ToString(#,###0.###)。但它不是格式化的您的问题不是很清楚,但这应该可以实现您的目标: decimal numericValue = 3494309432324.00m; string formatted = numericValue.ToSt
但不是432324 案例2:十进制数是22222.22(没有逗号) 需要将其显示为2222222
我尝试了
ToString(#,###0.###)
。但它不是格式化的您的问题不是很清楚,但这应该可以实现您的目标:
decimal numericValue = 3494309432324.00m;
string formatted = numericValue.ToString("#,##0.00");
然后,格式化的将包含:349430943224.00尝试使用
ToString("#,##0.00")
ToString("#,##0.###")
来自MSDN
*“0”自定义格式说明符用作零占位符符号。如果正在格式化的值在格式字符串中出现零的位置有一个数字,则该数字将复制到结果字符串中;否则,结果字符串中将显示零。小数点前最左边的零和小数点后最右边的零的位置决定了结果字符串中始终存在的数字范围
“00”说明符使值四舍五入到小数点前最近的数字,其中始终使用从零开始的四舍五入。例如,将34.5格式化为“00”将导致值35.*也许您只需要标准格式字符串“N”
,如中所示
number.ToString("N")
它将使用1000个分隔符和固定数量的小数。千位分隔符的符号和小数点的符号取决于您使用的格式提供程序(通常是CultureInfo
),小数的数量也取决于您使用的格式提供程序(根据需要,通常是2)
如果格式提供程序指定了不同的小数位数,并且您不想更改格式提供程序,则可以在N
之后提供小数位数,如.ToString(“N2”)
中所示
编辑:逗号之间组的大小由
CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes
数组,因为您没有指定特殊的格式提供程序
CultureInfo us = new CultureInfo("en-US");
TotalAmount.ToString("N", us)
您将得到结果1234567890.00
所需的只是“#,0.00”,其余的由c#完成
Num.ToString(“#,0.00”)
- “#,0”格式化千个分隔符
- “0.00”强制使用两个小数点
我也有同样的问题。我想在电子表格中使用“通用”格式的数字格式,意思是如果数字重要,就显示小数,如果不重要,就删掉。换句话说:
1234.56=>1234.56
1234=>1234
它需要支持小数点后的最大位数,但如果不需要的话,不要在后面加零或点,当然,它需要对区域性友好。我从来没有真正想出一个干净的方法来单独使用,而是使用String.Format和一些区域性帮助的组合(LinqPad C#Program)
对于Razor视图:
$@string.Format("{0:#,0.00}",item.TotalAmount)
string Mynewcurrency=DisplayIndianCurrency(“7743450.00”);
专用字符串显示独立电流(字符串EXruppesformate)
{
字符串票价=EXruppesformate;
decimal parsed=decimal.Parse(fare,CultureInfo.InvariantCulture);
CultureInfo印地语=新的CultureInfo(“en-IN”);
//string text=string.Format(印地语,{0:c}),已解析;如果需要Rs 77,43450.00
string text=string.Format(印地语,{0:N},已解析);//如果需要77,43450.00
返回ruppesformate=文本;
}
尝试使用
ToString("#,##0.00")
ToString("#,##0.###")
产生:
123 = 123
1234 = 1,234
1234.56 = 1,234.56
123456.789 = 123,456.789
1234.56789123 = 1,234.5679
1234.55678=>1234.556
1234=>1234
如果您使用的是字符串变量,则可以直接使用:
设置字符串格式,然后指定格式(例如N0、P2等)
您还可以通过在末尾添加数字来指定要显示的小数位数,如
$"{Number:N1}" #Outputs 2,000.5
$"{Number:N2}" #Outputs 2,000.55
$"{Number:N3}" #Outputs 2,000.555
$"{Number:N4}" #Outputs 2,000.5551
当你说“它不工作”的时候,字符串。格式到底在做什么?我没有尝试字符串。格式方法,我用tostring格式很简单。我真的不明白你的例子,那是什么格式?(或者只是我)哈哈,那么你的ToString格式的结果是什么呢?如果你想让123456789显示为34,94,30,94,32324.00:这里有一些只有Oz巫师才能理解的神奇逻辑吗?:对于那些只在.00时才忽略.00的人来说,它是:{0:##,0.##}
在模型中,它就像公共十进制数{get;set;},当我使用输入数据库值29.1234时,我在视图29.12中得到结果,即使我更改了数据库十进制数(18,4),它是(18,2)但我还是得到了29.1200的值,但我想要的是没有任何变化的精确值,这是可能的。这是什么,这个答案被接受了?它给了我1234567890.00当number.ToString(“#,###0.00”)时,不需要Convert.ToDecimal
给出了相同的结果。@Toolkit线程的当前区域性决定了要使用的分隔符。您的区域性使用空格。您可能需要使用重载.ToString
,该重载包含一个附加参数,即格式提供程序。对于格式提供程序,您可以传递区域性,如CultureInfo.InvariantCulture
or例如CultureInfo.GetCultureInfo(“en-US”)
。或者您可以传递NumberFormatInfo
的实例。CultureInfo-US=new CultureInfo(“en-US”)这是一个很好的解决方案。这不是他要求的,但这正是我所需要的。这是我个人见过的最好的答案。我在扩展方法中使用了一个稍微修改的版本。干得好!
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