-1 -> <1K
0 ->
1 -> <1K
10 -> <1K
100 -> <1K
511 -> <1K
512 -> 1K
513 -> 1K
999 -> 1K
1000 -> 1K
1023 -> 1K
1024 -> 1K
1025 -> 1K
10000 -> 10K
100000 -> 98K
1000000 -> 977K
10000000 -> 9766K
100000000 -> 95M
1000000000 -> 954M
10000000000 -> 9537M
100000000000 -> 93G
1000000000000 -> 931G
10000000000000 -> 9313G
100000000000000 -> 93132G
1000000000000000 -> 931323G
####
for my $amount( qw/-1 0 1 10 100 511 512 513 999 1000 1023 1024 1025
10000
100000
1000000
10000000
100000000
1000000000
10000000000
100000000000
1000000000000
10000000000000
100000000000000
1000000000000000/ )
{
print "$amount -> ", amount($amount), "\n";
}
##
##
sub amount {
my $num = shift;
return '' if $num < 0;
return '0K' if $num == 0;
return '<1K' if $num < 1024;
my @suffix = qw/K M G T P/;
my $offset = -1;
while( $num >= 1024 and $offset < scalar @suffix ) {
++$offset;
$num = int( $num / 1024 );
}
return "$num$suffix[$offset]";
}