$number = 1.80; $premium = $number * ( 1 + 10/100 ); # 1.8 + 10% of 1.8 $expected = 1.98; # As we know 1.8 + 10% of 1.8 is 1.98 print "Number 1 : $premium \n"; print "Number 2 : $expected \n"; print "Not" if $expected != $premium; print "Equal !! "; #### Number 1 : 1.98 Number 2 : 1.98 NotEqual !! #### =pod Sub : isEqualFloat Desc : to compare two floating point numbers and find out if they are equal Args : float1, float2, delta value(optinal) or 0.00001 Returns : True if they are apart by the delta value, false otherwise =cut sub isEqualFloat($$$) { my( $float1, $float2, $delta ) = @_; $delta ||= 0.00001; # default value of delta abs( $float1 - $float2 ) < $delta } # call as if ( isEqualFloat( 1.98, ( 1.8 * (1 + 10/100) )) ) { ... } # for high precision comparison if ( isEqualFloat( 1.98, ( 1.8 * (1 + 10/100) ), 0.0000001 ) ) { ... }