PrecisionEvaluate

説明

BigDecimal 精度演算を使用して文字列式 (複数指定可) を左から右へダイナミックに評価し、任意精度の計算式の値を計算します。

戻り値

評価結果のオブジェクト

関数のシンタックス

PrecisionEvaluate(string_expression1 [, string_expression2 , ... ])

関連項目

Evaluate、『ColdFusion アプリケーションの開発』のUsing Expressions and Number Signs

パラメータ

パラメータ

説明

string_expression1、string_expression2...

評価対象となる式です。

使用方法

PrecisionEvaluate 関数を使用すると、任意の長さ (BigDecimal 精度) の小数値を計算できます。BigDecimal 精度演算では、任意の長さの小数が受け入れられ、任意の長さの小数が生成されます。指数表記は使用されません。

PrecisionEvaluate 関数で取得した任意精度の結果は、加算、減算、乗算、および除算のみに使用できます。次の演算を使用する場合は、通常の整数演算または浮動小数点演算が実行されるので、BigDecimal 値は返されません。

  • 累乗 (^)

  • 剰余 (MOD または %)

  • 整数の除算 (/)

この関数が Evaluate 関数と異なる点は、数値の計算に BigDecimal 精度演算を使用する点のみです。それ以外の動作は完全に同じです。左部分の評価結果が右部分に対して意味を持つことがあります。この関数は一番右にある式の評価結果を返します。文字列式に引用符または二重引用符が含まれている場合は、その引用符をエスケープする必要があります。

1/3 のように評価結果が無限小数になる場合、小数部は 20 桁までに制限されます。

注意: 処理効率を高めるため、数式を評価する場合は引用符 (") で囲まないようにします。得られる結果は同じですが、PrecisionEvaluate("a*b") とするよりも PrecisionEvaluate(a*b) としたほうが処理効率が高くなります。

<h3>PrecisionEvaluate Example</h3> 
<cfif IsDefined("FORM.myExpression")> 
    <cftry> 
        <!--- Evaluate the expression and display the result. ---> 
        <cfset theExpression = PrecisionEvaluate(Form.myExpression)> 
        <cfoutput> 
            The value of the expression #FORM.MyExpression#  
            is #theExpression#.<br> 
        </cfoutput> 
 
        <cfcatch type="any"> 
            <cfoutput>Could not evaluate the expression #Form.myExpression#. 
            </cfoutput> 
        </cfcatch> 
    </cftry> 
</cfif> 
 
<cfform preservedata="yes"> 
    <h3>Enter a ColdFusion expression for evaluation.</h3> 
    <p>Try using some really big decimal numbers.</p> 
    <cfinput type="text" name="myExpression" size="60"><br> 
    <br> 
    <cfinput type="submit" name="submit"> 
</cfform>