C#MVC.Net格式货币,不带小数
我正在寻找将浮动显示为货币的DataFormatString。但如果十进制值不相关(0),则忽略它们 目前我正在使用:C#MVC.Net格式货币,不带小数,c#,.net,asp.net-mvc,formatting,C#,.net,Asp.net Mvc,Formatting,我正在寻找将浮动显示为货币的DataFormatString。但如果十进制值不相关(0),则忽略它们 目前我正在使用: [DisplayFormat(DataFormatString = "{0:C}")] 在我的模型上。这将正确显示为货币。我找不到任何地方可以详细说明我需要做哪些更改来省略小数点?我认为没有一种方法可以明确使用货币格式,但您可以使用字符使用自定义格式: 这适用于美国货币: [DisplayFormat(DataFormatString = "{0:$#.##}")] #字符
[DisplayFormat(DataFormatString = "{0:C}")]
在我的模型上。这将正确显示为货币。我找不到任何地方可以详细说明我需要做哪些更改来省略小数点?我认为没有一种方法可以明确使用货币格式,但您可以使用
字符使用自定义格式:
这适用于美国货币:
[DisplayFormat(DataFormatString = "{0:$#.##}")]
#
字符仅在需要时表示数字
[DisplayFormat(DataFormatString = "{0:C0}")]
这应该给你0个小数。但是自动循环!所以如果你得到56,它将取整为1
20000,00=>20000欧元
20000,56=>20001欧元
20000,49=>20000欧元
/编辑:我从这里借用了一个想法:
如果可以将浮点值转换为十进制,则可以使用此Extensionmethod忽略0。它将截断十进制数,如果此截断值等于原始值,则会截断零。如果不是,则显示2位数字。
我知道这不是Dataformat字符串,但我不确定,它可以像注释一样简单地完成
public static string ToCurrencyString(this decimal d)
{
return d.Equals(Decimal.Truncate(d)) ? d.ToString("0 €") : d.ToString("0.00 €");
}
您可以将其放在扩展方法中,并在需要时调用它。的可能重复项我认为这不是重复项。上面的链接显示了一个解决方案,描述了这个问题的OP已经在使用什么。这并没有解决他关于在小数不相关的情况下省略小数的问题。我认为OP只想在小数不相关的情况下省略小数,而不是在所有情况下。是的。。。似乎我只是忽略了。。。这就是我最终的目的。在研究了小数的可能性之后,我们不太可能忽略它们。
var price = 100.0M;
var curr = price % 1 == 0 ? price.ToString("C0") : price.ToString("C");