今天居然在如何用ruby实现保留小数点后两位小数的问题上花费了1.5小时,所以我觉得有必要将这个东西记录下来。
原本打算写一个helper方法,format文件的大小,如下:
def format_file_size(size_in_byte)
case size_in_byte
when (1024…1024**2): return "#{(size_in_byte/1024)}Kb"
when (1024**2…1024**3): return "#{format(’%.2f’,(size_in_byte/1024**2.to_f))}Mb"
when (1024**3…1024**4): return "#{format(’%.2f’,(size_in_byte/1024**3.to_f))}Gb"
end
end
可是为了实现保留两位小数的方法可费了不少的劲,最终找到了Kernal.sprintf()实现,format是sprintf的alias。
format(pattern,value):其中pattern表示要格式化形式,在这里我们用“%.2f”,表示保留小数点后2位数字,当然我们还可以写成“%05.2f”,表示整个字符串最少5位数(不包括小数点),如果value少于5位用”0”占位