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