Groovy货币格式

tni*_*hol 5 formatting groovy currency

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

$100,000,000.00
  $9,123,123.25
         $10.20
      $1,907.23
Run Code Online (Sandbox Code Playgroud)

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

ata*_*lor 12

你可能想用NumberFormat.getCurrencyInstance().这将返回一个NumberFormat对象,该对象使用默认Locale的标准货币表示(或者可选地,您传入的那个).

为了正确证明,你可以使用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
Run Code Online (Sandbox Code Playgroud)


小智 5

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

<g:formatNumber number="${150000}" type="currency" currencyCode="USD"/>
Run Code Online (Sandbox Code Playgroud)

为了右对齐,我会使用样式:

<td style='text-align:right;...'>
Run Code Online (Sandbox Code Playgroud)