【问题标题】:Format decimal 9999,99格式十进制 9999,99
【发布时间】:2012-05-22 17:53:42
【问题描述】:

是否有格式字符串将小数格式化为 000000000,00。 所以前 9 位数字,如果需要,用零填充;逗号作为小数分隔符和两个小数位。

  • 0 => 00000000,00
  • 12 => 00000012,00
  • 987456,456 => 000987456,46

类似 myDecimal.ToString("D9") 和 .ToString("F2")

【问题讨论】:

  • 除了扩展方法,别以为有方法。
  • @Berat,扩展方法是什么意思?
  • 哦@Boris,对不起。我不知道String.Format的这方面

标签: .net vb.net formatting decimal


【解决方案1】:

你可以使用String.Format:

Dim d1 = 0D
Dim d2 = 12D
Dim d3 = 987456.456
Dim d1formatted = String.Format("{0:000000000.00}", d1)
Dim d2formatted = String.Format("{0:000000000.00}", d2)
Dim d3formatted = String.Format("{0:000000000.00}", d3)

http://msdn.microsoft.com/en-us/library/0c899ak8.aspx

【讨论】:

  • 这将使用点而不是逗号作为小数分隔符
【解决方案2】:
String.Format("{0:000000000.00}", mydouble);       

你会得到一个 , 或 .基于线程的当前文化设置。

如果你使用:

String.Format Method (IFormatProvider, String, Object[])

您可以设置正确的格式化程序

【讨论】:

  • 您可能还会在此处获得千位分隔符,这也取决于文化设置。
  • 这是自定义的数字格式字符串,需要显式请求千位分隔符的存在
  • 返回正确,只是小数点分隔符是点而不是逗号。将格式更改为使用逗号最终会导致完全奇怪的事情。这看起来像是文化信息。
【解决方案3】:
decimal value = 0m;
Console.WriteLine(value.ToString("000000000.00", CultureInfo.CreateSpecificCulture("da-DK")));
// 000000000,00

value = 12m;
Console.WriteLine(value.ToString("000000000.00", CultureInfo.CreateSpecificCulture("da-DK")));
// 000000012,00

value = 987456.456m;
Console.WriteLine(value.ToString("000000000.00", CultureInfo.CreateSpecificCulture("da-DK")));
// 000987456,46

【讨论】:

  • 传递文化是关键。我希望有一种方法可以设置小数点分隔符,而无需传递文化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
相关资源
最近更新 更多