他の人がPrecisionEvaluateを使用してそのような問題に言及または解決したように、大きな数値と長い10進数の操作に問題がありますが、そのような関数では一貫した結果を得ることができませんでした.
このコードの例:
<cfset n = 0.000000000009>
<cfoutput>#precisionEvaluate(n)#</cfoutput> // this will produce "9E-12"
<cfoutput>#precisionEvaluate("n")#</cfoutput> // this will produce "0.000000000009"
Adobe Documentationによると、 Quote の使用は推奨されておらず (処理が非効率であるため)、同じ結果が得られるはずですが、上記のコードではそうではありません。
一貫性のない結果を伴うさらなる試行:
<cfset n = 0.000000000009>
<cfset r = 12567.8903>
<cfoutput>#precisionEvaluate(r * n)#</cfoutput> // this will produce "1.131110127E-7"
<cfoutput>#precisionEvaluate("r * n")#</cfoutput> // this will produce "1.131110127E-7", same as above
<cfoutput>#precisionEvaluate(r / n)#</cfoutput> // this will produce "1396432255555555.55555555555555555556"
<cfoutput>#precisionEvaluate("r / n")#</cfoutput> // this will produce "1396432255555555.55555555555555555556", same as above
同様のケースで問題に遭遇した人はいますか?矛盾に対処するための実際的な解決策は何ですか? 私は試しました: val() 関数を使用しても解決しません。これは短い数値のみに制限されているためです。numberFormat() 関数を使用すると、小数点以下の桁数を渡して適切にフォーマットする必要があるため困難です。