更改货币符号位置

问题描述

我想知道是否可以更改货币符号的认位置。 例如,输出将是这样的:$123,00 但我希望它是这样的 123,00 $

请注意,文化可能会随着用户设置而改变

public CultureInfo CurrencyCulture { get; }

public string FormatCurrency(decimal value)
{
    var decimalPlace = _config.GetValue<int>("Global.CurrencyDecimalPlace");
    return value.ToString($"C{decimalPlace}",CurrencyCulture);
}

在 CSHTML 内部

<tr>
    <td>
        <div>@item.Product.Name</div>
    </td>
    <td>@CurrencyService.FormatCurrency(item.ProductPrice)</td>
    <td>@item.Quantity</td>
    <td>@CurrencyService.FormatCurrency(item.ProductPrice * item.Quantity))</td>
</tr>

解决方法

您缺少的一点信息是属性 CurrencyPositivePattern 及其更复杂的对应物 CurrencyNegativePattern

在备注部分您可以找到此表

Value   Associated pattern
0       $n
1       n$
2       $ n
3       n $

所以你的代码可以写成

public string FormatCurrency(decimal value)
{
    CurrencyCulture.NumberFormat.CurrencyPositivePattern = 3;
    var decimalPlace = _config.GetValue<int>("Global.CurrencyDecimalPlace");
    return value.ToString($"C{decimalPlace}",CurrencyCulture);
}