我在使用大数和长十进制数时遇到问题,正如其他人提到或使用PrecisionEvaluate解决了这样的问题,我无法通过这样的函数获得一致的结果.
此代码示例:
<cfset n = 0.000000000009>
<cfoutput>#precisionEvaluate(n)#</cfoutput> // this will produce "9E-12"
<cfoutput>#precisionEvaluate("n")#</cfoutput> // this will produce "0.000000000009"
Run Code Online (Sandbox Code Playgroud)
根据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
Run Code Online (Sandbox Code Playgroud)
有没有人遇到类似案件的问题?解决不一致问题的实用解决方案是什么?我试过:使用val()函数没有解决,因为它仅限于短数,使用numberFormat()函数很难,因为我们必须传递小数位数才能正确格式化.