C#中的货币格式缩短输出字符串

时间:2010-04-22 11:38:47

标签: c# currency

嘿,我目前有一种货币格式方法:

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

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

我正在寻求调整这个以缩短字符串,因为货币变得更大。有点像堆栈溢出从999到1k而不是1000(或1.6k而不是1555)。

我认为这是一个相对容易的任务,但有没有内置函数或者你只需​​要手动操作字符串?

由于

3 个答案:

答案 0 :(得分:3)

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

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

您可能还想将moneyIn / 1000的结果四舍五入到第一个十分位置。

HTH

答案 1 :(得分:1)

框架内置了任何内容。你必须为此实现自己的逻辑。

这个问题经常出现 - 请参阅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");
}

答案 2 :(得分:0)

您必须编写自己的函数才能执行此操作。它不是内置于.NET中的默认字符串格式化内容。