【发布时间】:2011-06-02 14:27:47
【问题描述】:
如何获得以 MB 为单位的准确文件大小?我试过这个:
compressed_file_size = File.size("Compressed/#{project}.tar.bz2") / 1024000
puts "file size is #{compressed_file_size} MB"
但它削减了 0.9 并显示 2 MB 而不是 2.9 MB
【问题讨论】:
-
与浮点数与整数问题分开 - 1024000 真的是您想要的常数吗?通常MB是2^20,也就是1048576。
-
感谢您的来信。我在我的代码中修复了这个问题。
-
根据您想要的功能齐全程度,Rails 的
ActionView::Helpers::NumberHelper#number_to_human_size的源代码是一个很好的参考实现。 apidock.com/rails/ActionView/Helpers/NumberHelper/… -
知道这是旧的,但正在发生的事情是你除以一个整数,它返回整数,又名。砍数字。如果您在末尾添加
.0,它将使用浮点数进行计算。所以:compressed_file_size = ... .... / 1024000.0应该给你浮点数。您可能需要在File.size(...)上添加.to_f。
标签: ruby