#!/usr/local/bin/perl -w use strict; my ( $number, $premium, $expected ); $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 !! #### ;# 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 ;#------------------------------------------------------------ sub isEqualFloat{ my ( $float1, $float2, $delta ) = @_; $delta ||= 0.00001; # default value of delta return ( abs ( $float1 - $float2 ) < $delta ) } #### if ( isEqualFloat(1.98, ( 1.8 * (1 + 10/100) )) ) { # do something ... } # for high precision comparison if ( isEqualFloat(1.98, ( 1.8 * (1 + 10/100) ), 0.0000001) ) { # do something ... }