https://stackoverflow.com/users/227532/mefによって書かれたPHP
関数https://stackoverflow.com/a/2510459/425964を使用して、バイトをキロバイト、メガバイト、ギガバイトなどにフォーマットします。@Mef
問題はそれです:
echo formatBytes(9287695, 2);
を返します8.86 MB
。そうあるべきじゃない9.3 MB
?ここで何か不足していますか?
ありがとう。
https://stackoverflow.com/users/227532/mefによって書かれたPHP
関数https://stackoverflow.com/a/2510459/425964を使用して、バイトをキロバイト、メガバイト、ギガバイトなどにフォーマットします。@Mef
問題はそれです:
echo formatBytes(9287695, 2);
を返します8.86 MB
。そうあるべきじゃない9.3 MB
?ここで何か不足していますか?
ありがとう。
9.3 MB であってはなりません。バイトは 1024 倍されるため、KB / MB などに変換すると常に少なくなります。
したがって、バイト番号が 92.. で始まる場合、9.3 MB になることはありません。
8.86 が正しい値だと思います。
9287695/1024/1024=8.86
9287695/1000/1000=9.30
1 MB = 1024 KB = 1024*1024 バイト
メモリの単位
Bit=a 1 or 0
Byte=8 Bits
Kilobyte=1024 Bytes
Megabyte=1024 Kilobytes
Gigabyte=1024 Megabytes
Terabyte=1024 Gigabytes
したがって、9287695 バイトは実際には 8.86 MB です。
メビ* とメガ*、キビ* とキロ* の区別について、IT の世界では多くの混乱があります。8.86の適切なサフィックスは「MB」ではなく「MiB」であるため、実際には完全に正しいです。
これは、1 MiB = 1024 KiB および 1 KiB = 1024 B であるためです。ただし、1 MB = 1000 kB および 1 kB = 1000 B です。
したがって、混乱。
したがって、8.86 である(9287695/1024)/1024 = 8,857
限り、OK () です8.86 MiB
。
詳細については、こちらを参照してください: http://en.wikipedia.org/wiki/Mebibyte