你知道一个简单直接的方法/子/模块,它允许我将一个数字(比如1234567.89)转换成一个易读的形式 – 比如1.23M吗?
现在我可以通过几次比较来做到这一点,但我对我的方法不满意:
if($bytes > 1000000000){ $bytes = ( sprintf( "%0.2f",$bytes/1000000000 )). " Gb/s"; } elsif ($bytes > 1000000){ $bytes = ( sprintf( "%0.2f",$bytes/1000000 )). " Mb/s"; } elsif ($bytes > 1000){ $bytes = ( sprintf( "%0.2f",$bytes/1000 )). " Kb/s"; } else{ $bytes = sprintf( "%0.2f",$bytes ). "b/s"; }
谢谢您的帮助!
解决方法
Number::Bytes::Human模块应该能够帮助你.
可以在其概要中找到如何使用它的示例:
use Number::Bytes::Human qw(format_bytes); $size = format_bytes(0); # '0' $size = format_bytes(2*1024); # '2.0K' $size = format_bytes(1_234_890,bs => 1000); # '1.3M' $size = format_bytes(1E9,bs => 1000); # '1.0G' # the OO way $human = Number::Bytes::Human->new(bs => 1000,si => 1); $size = $human->format(1E7); # '10MB' $human->set_options(zero => '-'); $size = $human->format(0); # '-'