print "contains fractional component\n" if $number =~ /\.(?!0*$)/; #### sub r { $_[0] ? 'fractional' : 'integer' } for my $n ( '1.00', 2**50, ) { print( "$n:\n", "method 1: ", r( $n =~ /\./ ), "\n", "method 2: ", r( $n =~ /\.(?!0*$)/ ), "\n", "method 3: ", r( sprintf('%f',$n) =~ /\.(?!0*$)/ ), "\n", "method 4: ", r( int($_)!=$_ ), "\n", "\n", ); } #### 1.00: method 1: fractional method 2: integer method 3: integer method 4: integer 1.12589990684262e+015: method 1: fractional method 2: fractional method 3: integer method 4: integer