格式化不带小数的货币

时间:2015-06-29 10:22:57

标签: coldfusion coldfusion-9

我正在使用LSEuroCurrencyFormat这样:

#LSEuroCurrencyFormat("1999","Local")#

输出如下内容:

1.999,00 €

但我需要的是,格式化后不应显示小数部分或不应该是价格的一部分。它应该是这样的:

1.999 €

1 个答案:

答案 0 :(得分:2)

该函数使用标准的java规则来格式化Currency通常意味着两个小数位。正如@Adam所提到的,没有任何内置可以为您提供准确的结果。但是,您可以使用java's number formatting classes和自定义Locale来获得更强大的解决方案。

例如,您可以使用NumberFormat类为相应的区域设置获取货币格式化程序。然后使用其方法来抑制小数位。 (显然,这可能会导致舍入,具体取决于输入值。)我不知道JVM的默认Locale,但是能够使用西班牙语的Locale生成所需的结果,即{{1} }

es_ES

结果是:

// Grab currency formatter for the desired Locale
locale = createObject("java", "java.util.Locale").init("es", "ES");
formatter = createObject("java", "java.text.NumberFormat").getCurrencyInstance(locale);

// Suppress decimal places 
formatter.setMaximumFractionDigits(0);
writeDump( formatter.format( javacast("double", 1999)) );

请记住,java的预定义数字和日期格式基于所使用的Locale的标准约定。其中包括小数分隔符,货币符号等详细信息 - 甚至包括货币符号的位置。虽然您可以根据需要更改格式,但通常最好将其保持在普通用户的预期范围内。

相关问题