Techioz Blog

Ruby でのバイトからメガバイトへの変換

概要

JavaScript (または CoffeeScript) には次の関数があります。

bytesToMegabytes = (bytes) ->
  return Math.round((b/1024/1024) * 100) / 100

Rubyで再現してみます。私は持っている:

def bytes_to_megabytes (bytes)
    (((bytes.to_i/1024/1024) * 100) / 100).round
end

しかし、これは違うのでしょうか?たとえば、1153597 は Ruby コードでは 1 になります。

解決策

賢い人にはなりたくないが、ここでの計算の混乱に誰も気づいていないようだ。 1メガバイトは単純に1000000バイトです(グーグルで調べてください)。 1024 は、10^2 バイト (1024 キロバイト) に関する時代遅れの混乱です。 1998 年以来、これはキビバイト (wiki) として知られるようになり、現在では標準になっています。

つまり、バイトを 1000000 で割れば完了です。利便性をさらに高めるために、いくつかの丸めを追加しました。

def bytes_to_megabytes (bytes)
    (bytes.to_f / 1000000).round(2)
end
puts bytes_to_megabytes(1153597)  # outputs 1.15