sub format_float { $val = shift; $intgr = int( $val ); $fract = sprintf( "%2.2d", 100 * abs( $val - $intgr )); if ( length( $intgr ) > 3 ) { while ( $intgr =~ /\d{4,}/ ) { $intgr =~ s/(\d{3})\b/.$1/ } } join( ",", $intgr, $fract ); } foreach ( 10.5, 4000.8, "100000.000", 80000, "80000", 36000.0000, "36000.0000", 12725.0000, "12725.0000" ) { print "$_ => " . format_float( $_ ) . "\n"; }