DollarFormat与ColdFusion中的减号

Gue*_*est 3 coldfusion number-formatting

我试图在ColdFusion中将-1000的值格式化为 - $ 1,000.00.使用dollarFormat时,它会在括号中显示负数($ 1,000.00).当我像这样使用numberFormat时:

numberFormat(-1000,'$');
Run Code Online (Sandbox Code Playgroud)

它显示为 - $ 1000,没有2位小数和逗号,但在正确的位置显示减号.如果我尝试:

numberFormat(-1000,'$_,___.__');
Run Code Online (Sandbox Code Playgroud)

它显示为$ -1,000.00,其中减号位于$符号后面.如果我尝试:

numberFormat(-1000,'-$_,___.__');
Run Code Online (Sandbox Code Playgroud)

它仍显示为$ -1,000.00,其中减号位于$符号后面.

似乎如果没有小数,则减号位于正确的位置,但只要添加小数,则减号将出现在美元符号后面.有没有人知道如何正确地获得格式 - $ 1,000.00?

Ada*_*ron 7

使用Java DecimalFormat,它允许为正数和负数提供格式化掩码:

for (v in [1234,-5678]){
    result = createObject("java", "java.text.DecimalFormat").init("$##,####0.00;-$##,####0.00").format(javacast("double",v));
    writeDump(var=[v, result]);
    writeOutput("<hr>");
}
Run Code Online (Sandbox Code Playgroud)

显然将它包装在UDF中.

  • 嘿.我找到了大部分内容......在Stack Overflow上;-) (2认同)
  • @ScottStroz我无法想到有人不应该提出增强请求来获得第二个可选参数添加到`dollarFormat()`以便更灵活地处理这个问题.或者弃用所有`dollarFormat()`,`LSCurrencyFormat()`,`LSEuroCurrencyFormat()`以支持一个统一的`currencyFormat()`,它既可以识别语言环境又可以屏蔽.在21stC中,没有办法需要非区域设置感知功能.因此,不需要以LS为前缀或在其名称中指定货币名称.这是古老的语言设计. (2认同)