【问题标题】:Currency Format in C# to shorten the output stringC# 中的货币格式以缩短输出字符串
【发布时间】:2010-04-22 11:38:46
【问题描述】:

你好,我目前有一个 Currency Format 方法:

private string FormatCurrency(double moneyIn)
{
    CultureInfo ci = new CultureInfo("en-GB");

    return moneyIn.ToString("c", ci);
}

随着货币变大,我希望对其进行调整以缩短字符串。有点像堆栈溢出如何从 999 变为 1k 而不是 1000(或 1.6k 而不是 1555)。

我想这是一项相对简单的任务,但是是否有任何内置函数或者您只需要手动操作字符串?

谢谢

【问题讨论】:

    标签: c# currency


    【解决方案1】:

    我将使用以下内容来完成您的要求,我认为没有任何内置功能可以直接执行此操作!

    return (moneyIn > 999) ? (moneyIn/(double)1000).ToString("c", ci) + "k" : moneyIn.ToString("c", ci);
    

    您可能还想将 moneyIn/1000 的结果四舍五入到小数点后 1 位。

    HTH

    【讨论】:

      【解决方案2】:

      框架中没有内置任何内容。您必须为此实现自己的逻辑。

      这个问题经常出现 - 请参阅this 问题的答案(格式数字,如 StackoverFlow(以 K 后缀四舍五入)。

      // Taken from the linked question. Thanks to SLaks
      static string FormatNumber(int num) {
        if (num >= 100000)
          return FormatNumber(num / 1000) + "K";
        if (num >= 10000) {
          return (num / 1000D).ToString("0.#") + "K";
        }
        return num.ToString("#,0");
      }
      

      【讨论】:

        【解决方案3】:

        您必须编写自己的函数来执行此操作。它没有内置在 .NET 中的默认字符串格式化内容中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多