【问题标题】:How to convert decimal to money format如何将十进制转换为货币格式
【发布时间】:2014-01-17 16:25:17
【问题描述】:

我正在尝试转换一个数字,使其看起来像货币格式。 我需要取 258000 并将其设为 2,580.00 或 25000 并将其设为 250.00 或 360 并将其设为 3.60 这是我正在使用的,但它在所有数字的末尾添加“.00”,使 2500 2500.00 但它应该是 25.00。

Value = string.Format("{0:##,###.00}", Convert.ToDecimal(Value));

【问题讨论】:

  • 您是否考虑过使用专门为货币设计的C 格式说明符? (然后除以 100,看到您的值似乎是您实际想要显示的值的 100 倍......)
  • 我不能使用它,因为用户输入 200 表示 2.00。这意味着他们也输入美分。它也给了我不想要的美元。
  • 你当然可以除以 100...

标签: c# decimal string-formatting string.format


【解决方案1】:

在我看来,您只是错过了一个事实,即您可以在解析后将用户的输入除以 100:

using System;

class Program
{
    static void Main(string[] args)
    {
        string input = "2500";
        decimal cents = decimal.Parse(input); // Potentially use TryParse...
        decimal dollars = cents / 100m;
        string output = dollars.ToString("0.00");
        Console.WriteLine(output); // 25.00
    }
}

请注意,关于货币价值的显示方式存在复杂的文化规则 - 我建议使用 C 格式说明符,使用 CultureInfo就像用户期望的那样,但NumberFormatInfo.CurrencySymbol 设置为空字符串。

您还应该考虑在解析用户的输入时使用哪种文化 - 如果他们决定使用分组分隔符或小数分隔符,它会显着影响结果。他们会总是输入一个整数吗?如果是这样,也将其解析为整数。

【讨论】:

  • 好的,我正在划分并使用 {0:##,###.00} 格式。它看起来运行良好。
【解决方案2】:
double valueOriginal = 260;
Response.Write( (valueOriginal / 100).ToString("C"));

260 = (206/100) 然后 (260/100).ToString("C");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 2012-12-19
    相关资源
    最近更新 更多