#!/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
...
}