我刚遇到一个奇怪的情况。为什么下面的代码没有返回0?相反,它返回一个非常小的负数。
<cfset x = 5448.10-3311.23-2136.87>
<cfoutput>x=#x#</cfoutput>
以上代码将输出:x = 4.54747350886E-013
我在CF9和CF10上运行了上面的代码并得到了相同的结果。
非常感谢任何帮助。
答案 0 :(得分:2)
<cfset x = PrecisionEvaluate(5448.10-3311.23-2136.87)>
<cfoutput>x=#x#</cfoutput>
PrecisionEvaluate()
的文档:
http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7fd9.html
答案 1 :(得分:0)
正如其他人所说,它与浮点精度有关。如果你想得到一个合理的结果,我只是想指出一个决议
<cfset x1 = 5448.19-3311.23-2136.87 />
<cfset x2 = numberformat(x1, "9.99") />
<cfoutput>x1=#x1#<br />x2=#x2#</cfoutput>
结果
x1=0.0899999999997
x2=0.09
当给定掩码时,numberformat函数会将数字四舍五入到指定的小数位。