Coldfusion为什么评估这些数字不相等?

Jas*_*n M 4 coldfusion coldfusion-8

为什么coldfusion 8评价为47.0000*15.40 eq 723.8为假?

<cfset test = false />
<cfset a = 47.0000 />
<cfset b = 15.40 />
<cfset c = 723.8 />

<cfif (a * b) eq c>
  <cfset test = true />
</cfif>

<cfdump "#test#">
Run Code Online (Sandbox Code Playgroud)

测试输出为false.

Bus*_*hes 15

您可以使用PrecisionEvaluate()让CF使用BigDecimals来进行数学运算.

<cfset test = false />
<cfset a = 47.0000 />
<cfset b = 15.40 />
<cfset c = 723.8 />

<cfif PrecisionEvaluate(a * b) eq c>
  <cfset test = true />
</cfif>

<cfdump var="#test#" abort="true">
Run Code Online (Sandbox Code Playgroud)

这导致预期答案为真.

  • @JasonM - 因为前者返回一个`java.lang.Double`.后者返回使用(并返回)更精确的`java.math.BigDecimal`.在[ColdFusion浮点..](http://stackoverflow.com/search?q= [coldfusion] +浮动+点+)上进行搜索,这里有大量的线程. (3认同)