Tag: currency

当货币值为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”字符串的本地化资源。 那我该怎么做? 谢谢

根据货币代码将十进制格式化为货币

我有一个收费表,金额和货币代码(美元,日元,加元,欧元等),我正在寻找正确格式化货币的最简单方法。 使用我的本地文化代码(美国)并获取我的decimal.ToString(“c”)得到我$ 0.00输出,但我想要正确的货币符号和基于代码的小数位数。 是否存在任何库? 我当然可以为每个语句编写一个switch语句和自定义规则,但我认为这必须在之前完成。 更新: 我修改了Jon B的示例代码,如下所示 static IDictionary GetCurrencyFormatStrings() { var result = new Dictionary(); foreach (var ci in CultureInfo.GetCultures(CultureTypes.AllCultures)) { try { var ri = new RegionInfo(ci.Name); result[ri.ISOCurrencySymbol] = string.Format(“{0}#,#0.{1};({0}#,#0.{1})”, ri.CurrencySymbol, new string(‘0’, i.NumberFormat.CurrencyDecimalDigits)); } catch { } } return result; } 这允许我简单地去Amount.ToString(Currency [“JPY”]),格式将在我的本地上下文中输出逗号分隔符,但是自动输入正确的货币符号和小数位。 让我知道是否有人有更清洁的方式这样做,或者我很快就会将Jon的答案标记为正确。

需要使用自定义货币格式与String.Format一起使用

我正在尝试在C#中使用String.Format(“{0:c}”,somevalue),但我很难搞清楚如何配置输出以满足我的需求。 以下是我的需求: 0输出为空白 1.00输出到1.00美元 10.00输出到10.00美元 100.00输出到$ 100.00 1000.00输出到$ 1,000.00 我已经尝试过String.Format(“{0:c}”,somevalue)但是对于零值,它输出$ 0.00这不是我想要的。 我也尝试过String.Format(“{0:$ 0,0.00; $(0,0.00);#}”,somevalue),但对于1.0,它输出$ 01.00。 String.Format(“{0:$ 0.00; $(0.00);#}”,somevalue)适用于大多数情况,但当somevalue为1000.00时,输出为$ 1000.00。 是否有适合所有5个案例的格式? 我阅读的所有文档仅详细介绍了基础知识,并未涉及此类方案。

String.Format(“{0:C2}”, – 1234)(货币格式)将负数视为正数

我使用String.Format(“{0:C2}”, -1234)来格式化数字。 它总是将数量格式化为正数,而我希望它变为$ – 1234