我正在使用PHP
函数https://stackoverflow.com/a/2510459/425964由@Mef
编写https://stackoverflow.com/users/227532/mef将字节格式化为千字节、兆字节、千兆字节等。
问题是:
echo formatBytes(9287695, 2);
返回8.86 MB
。应该是9.3 MB
吗?我是不是遗漏了什么?
谢谢。
它不应该是9.3MB,当转换为KB/MB等时,字节总是会减少,因为它乘以1024。
因此,如果字节号以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世界中,关于区分Mebi*和Mega*、Kibi*和kilo*有很多困惑。事实上,你是完全正确的,因为8.86的后缀应该是"MiB",而不是"MB"。
这是因为1 MiB=1024KiB和1 KiB=1024B。但是1MB=1000 kB和1 kB=1000 B.
因此混淆。
所以8.86是可以的((9287695/1024)/1024 = 8,857
),只要它是8.86 MiB
。
请参阅此处了解更多信息:http://en.wikipedia.org/wiki/Mebibyte