使用DecimalFormat()时抛出错误

时间:2014-10-17 13:44:20

标签: coldfusion

我正在使用以下代码,但我遇到的问题是它显示值$1,099.00作为值,

以下是我正在使用的代码:

#LSCurrencyFormat(DecimalFormat(unitprice),'local','#session.currencylocale#')#

使用上面的代码,我收到以下错误:

The value 1,099.00 cannot be converted to a number.

我尝试将DecimalFormat()包装在外面,但这只是给了我一个不同的错误。

1 个答案:

答案 0 :(得分:1)

尝试

#LSCurrencyFormat(LSParseNumber(unitprice),'local','#session.currencylocale#')#

或者这只是删除逗号。

#LSCurrencyFormat(Replace(unitprice,",","","ALL"),'local','#session.currencylocale#')#

如果这不起作用,您可以使用它从字符串中删除所有非数字友好符号

#LSCurrencyFormat(ReReplace(unitprice,"[^0-9\.\-\+]","","ALL"),'local','#session.currencylocale#')#

编辑:Dan对于decimalformat是正确的,可能正确的是它是你的错误的来源(我们不知道#unitprice#本身是什么样的)。使用数字时,请始终确保以最简单的形式存储它们,并且只显示带有十进制格式的##,如果这是您的偏好。

例如,如果我有用户输入金额,特别是金额,我会在将金额插入数据库之前使用其中一个来清除多余的字符。

当然,正如Leigh在下面的评论中指出的那样,您应该始终将数字存储在数据库提供程序的正确数据类型中(类型为int和money)。您应该在字段和正确的字段类型中存储1099.42而不是$ 1,099.42。