我在处理大数和长十进制数时遇到问题,正如其他人使用 PrecisionEvaluate 提到或解决了此类问题一样,我无法使用此类函数获得一致的结果。
此代码的示例:
<cfset n = 0.000000000009>
<cfoutput>#precisionEvaluate(n)#</cfoutput> // this will produce "9E-12"
<cfoutput>#precisionEvaluate("n")#</cfoutput> // this will produce "0.000000000009"
根据Adobe 文档,不建议使用 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() 函数很困难,因为我们必须传递小数位数才能正确格式化它。