【问题标题】:Groovy currency formattingGroovy 货币格式
【发布时间】:2014-01-28 17:31:25
【问题描述】:

我正在使用 groovy (grails 1.3.7) 将一些行写入文本文件,并且我想像以下示例输出一样格式化货币:

$100,000,000.00
  $9,123,123.25
         $10.20
      $1,907.23

所以基本上是右对齐或左填充,数字前面有美元符号,所以它们都像上面一样排列。第一个数字是我们期望看到的最长的数字。现在我有一个数量变量,它只是用 def 而不是字符串或数字或任何类似的东西定义的,但如果需要,我显然可以改变它。谢谢!

【问题讨论】:

  • 你目前有什么?

标签: groovy formatting currency


【解决方案1】:

您可能想使用NumberFormat.getCurrencyInstance()。这将返回一个NumberFormat 对象,该对象使用标准货币表示作为您的默认语言环境(或可选地,您传入的语言)。

要右对齐,您可以使用String.padLeft()

例子:

def formatter = java.text.NumberFormat.currencyInstance
def values = [0, 100000000, 9123123.25, 10.20, 1907.23]
def formatted = values.collect  { formatter.format(it) }
def maxLen = formatted*.length().max()
println formatted.collect { it.padLeft(maxLen) }.join("\n")

//output
          $0.00
$100,000,000.00
  $9,123,123.25
         $10.20
      $1,907.23

【讨论】:

  • 完美!这正是我一直在寻找的。谢谢!
【解决方案2】:

在 grails 中,像这样的东西会用逗号分隔符很好地格式化它。

<g:formatNumber number="${150000}" type="currency" currencyCode="USD"/>

对于右对齐,我会使用样式:

<td style='text-align:right;...'>

【讨论】:

    猜你喜欢
    • 2015-10-24
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多