Search code examples
coldfusioncoldfusion-8

Why does Coldfusion evaluate these numbers to not be equal?


Why does coldfusion 8 evaluate 47.0000 * 15.40 eq 723.8 as false?

<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#">

Test is output as false.


Solution

  • You can use PrecisionEvaluate() to have CF use BigDecimals to do the math.

    <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">
    

    This results in the expected answer of true.