Csharp/C#教程:当货币值为0.00美元时,C#创建自定义NumberFormatInfo以显示“Free”分享


当货币值为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

(0)
上一篇 2021年11月18日
下一篇 2021年11月18日

精彩推荐