我使用下面的格式来计算我在计算增加或减少百分比后得到的数字,这意味着这个数字可以是正数或负数。以下在Coldfusion上运行正常,但在Lucee上它会抛出错误 - 无法将[ - 6.50]字符串转换为数字值。知道如何解决这个问题。
<cfif money_deposit lt 0>
<cfset testVar = abs(NumberFormat(money_deposit,'99.99'))>
<cfelse>
<cfset testVar = NumberFormat(money_deposit,'99.99')>
</cfif>
答案 0 :(得分:3)
您应该可以使用javaCast
<cfif money_deposit lt 0>
<cfset testVar = abs(NumberFormat(javaCast("float", money_deposit),'99.99'))>
<cfelse>
<cfset testVar = NumberFormat(money_deposit,'99.99')>
</cfif>
答案 1 :(得分:1)
首先,删除所有空格。在任何情况下,最好首先测试输入参数是否为数字。
<!--- Remove any spaces --->
<cfset money_deposit = REreplace(money_deposit,"\s","","all")>
<cfif isNumeric(money_deposit)>
<cfif money_deposit lt 0>
<cfset testVar = abs(NumberFormat(money_deposit,'-99.99'))>
<cfelse>
<cfset testVar = NumberFormat(money_deposit,'99.99')>
</cfif>
</cfif>
答案 2 :(得分:0)
数字格式返回一个字符串 http://docs.lucee.org/reference/functions/numberformat.html
问题是你的格式化掩码“99.99”表示返回一个带小数点前两个字符的格式化数字,你得到的字符串值是“ - 6.50”,有一个额外的空格。尝试使用掩码格式为“9.99”或“09.99”