abs 不适用于 lucee coldfusion
abs not working on lucee coldfusion
我正在使用下面的格式来格式化计算增减百分比后得到的数字,这意味着这个数字可以是正数也可以是负数。下面的代码在 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>
您应该可以使用 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>
首先,删除所有空格。无论如何,最好先测试输入参数是否为数字。
<!--- 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>
数字格式return是一个字符串
http://docs.lucee.org/reference/functions/numberformat.html
问题是您的格式掩码“99.99”表示 return 小数点前有两个字符的格式化数字,您返回的字符串值为“- 6.50”,还有一个额外的 space.尝试使用“9.99”或“09.99”
的数字格式掩码
我正在使用下面的格式来格式化计算增减百分比后得到的数字,这意味着这个数字可以是正数也可以是负数。下面的代码在 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>
您应该可以使用 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>
首先,删除所有空格。无论如何,最好先测试输入参数是否为数字。
<!--- 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>
数字格式return是一个字符串 http://docs.lucee.org/reference/functions/numberformat.html
问题是您的格式掩码“99.99”表示 return 小数点前有两个字符的格式化数字,您返回的字符串值为“- 6.50”,还有一个额外的 space.尝试使用“9.99”或“09.99”
的数字格式掩码