当货币值为0.00美元时,C#创建自定义NumberFormatInfo以显示“Free”
我需要在我的ASP.NET MVC应用程序中显示货币,但当货币为0时,我希望它显示“Free”(当然是本地化的!)而不是0.00美元。
所以,当我有这样的事情……
Decimal priceFree = 0.00; Decimal priceNotFree = 100.00; priceFree.ToString("C"); priceNotFree.ToString("C");
输出为“$ 0.00”“$ 100.00”
我希望它是“免费”“100.00美元”
我想我可以使用.ToString(字符串格式,IFormatProvider formatProvider)方法来实现这一点,但我不知道如何去做。 显然,我希望尽可能多地重用NumberFormatInfo,并在输入为0时仅覆盖它。在这种情况下,我可以简单地返回包含“Free”字符串的本地化资源。
那我该怎么做?
谢谢
我认为最简单的方法是扩展方法:
public static string ToPriceString(this decimal value) { if (value <= 0m) return "Free"; // Your localized resource else return value.ToString("C"); }
如果你想使用IFormatProvider
, MSDN就有一个很好的例子 。
使用
.ToString("$###.00;;Free")
扩展方法怎么样:
public static string FreeString(this decimal dec) { if(dec == 0M) { return "Free"; } else { return dec.ToString("C"); } }
然后
priceFree.FreeString(); priceNotFree.FreeString();
而不是使用自定义IFormatProvider并每次传递它,如何:
上述就是C#学习教程:当货币值为0.00美元时,C#创建自定义NumberFormatInfo以显示“Free”分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!
public static class MyFormatter { public static string ToFreeString(this decimal d) { return d == 0 ? "Free" : d.ToString("d"); } }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/951385.html