格式化没有小数点的货币

Formatting currency without decimals

我正在使用 LSEuroCurrencyFormat 这样的:

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

输出如下:

1.999,00 €

但是我需要的是小数部分不应该显示或者格式化后不应该是价格的部分。它应该看起来像这样:

1.999 €

该函数使用标准 java 格式化规则 Currency, which usually implies two decimal places. As @Adam mentioned, there is nothing built in that will give you that exact result. However, you can use java's number formatting classes, with a custom Locale,以获得更强大的解决方案。

例如,您可以为您的 JVM 使用 NumberFormat class to grab a currency formatter for the appropriate Locale. Then use its methods to suppress the decimal places. (Obviously, that may result in rounding, depending on the input value.) I do not know the default Locale,但使用西班牙的区域设置能够产生所需的结果,即 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)) );

结果是:

1.999 € 

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