$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 ) ) {
...
}