X-Git-Url: http://git.shiar.net/barcat.git/blobdiff_plain/67f0129e0e80e700854f499eb459a18e7c03524e..ccbfed9910837a2be60c8b3ef0f990bcf60c0f2b:/barcat diff --git a/barcat b/barcat index d3ba821..22f8d31 100755 --- a/barcat +++ b/barcat @@ -143,13 +143,12 @@ if ($opt{markers} // 1 and $size > 0) { @lines > $nr or return if $opt{hidemin}; sub sival { - my $unit = int(log($_[0]) / log(1000) - ($_[0] < 1)); - my $float = $_[0] !~ /^ (?: 0*\.)? [0-9]{1,3} $/x; - sprintf('%*.*f%*s', - $float ? 5 : 3, $float, # length and tenths - $_[0] / 1000 ** $unit, # number - $float ? 0 : 3, # unit size - $#{$opt{units}} >> 1 < abs $unit ? "e$unit" : $opt{units}->[$unit] + my $unit = int(log(abs $_[0] || 1) / log(10) - 3*($_[0] < 1) + 1e-15); + my $float = $_[0] !~ /^0*[-0-9]{1,3}$/; + sprintf('%3.*f%1s', + $float && ($unit % 3) == ($unit < 0), # tenths + $_[0] / 1000 ** int($unit/3), # number + $#{$opt{units}} * 1.5 < abs $unit ? "e$unit" : $opt{units}->[$unit/3] ); } @@ -192,6 +191,7 @@ if ($opt{stat}) { } __END__ +=encoding utf8 =head1 NAME