2017-08-02 1 views
1

私は%増減を計算した後の数値をフォーマットするために以下を使用しています。つまり、この数値は正数または負数です。以下はColdfusion上でうまく動作しますが、Luceeではエラーをスローします。[ - 6.50]文字列を数値にキャストできません。どのようにこれを回避するか考えてください。absはlucee coldfusionには作用しません

<cfif money_deposit lt 0> 
    <cfset testVar = abs(NumberFormat(money_deposit,'99.99'))> 
<cfelse> 
    <cfset testVar = NumberFormat(money_deposit,'99.99')> 
</cfif> 
+0

money_forecastが数値の場合は、numberFormat関数とabs関数を切り替えてみてください。 –

+0

数値ではない – user747291

答えて

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> 
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> 
+0

上記はすべてのシナリオで機能していないようですが、他の負の数値ではない理由がわかりません – user747291

+0

何のエラーが表示されていますか? –

+0

[ - 6.50]文字列を数字の値にキャストできません – user747291

0

数値の形式に問題があなたの書式を設定するマスクである文字列 http://docs.lucee.org/reference/functions/numberformat.html

を返す「99.99」とは「、小数点の前にあなたが戻ってきている文字列値を2つの文字でフォーマットされた数値を返します - 6.50 "、余分なスペースが必要です。 「9.99」または「09.99」の数値書式のマスクを使用してみてください

関連する問題