-1

我正在使用https://stackoverflow.com/users/227532/mef编写的PHP函数https://stackoverflow.com/a/2510459/425964将字节格式化为千字节、兆字节、千兆字节等。@Mef

问题是:

echo formatBytes(9287695, 2);

退货8.86 MB。不应该9.3 MB吗?我在这里错过了什么吗?

谢谢。

4

4 回答 4

2

它不应该是 9.3 MB,当转换为 KB / MB 等时,字节总是会减少,因为它乘以 1024。

所以如果字节数以 92 开头.. 它永远不会导致 9.3 MB

我想 8.86 是正确的值。

于 2012-09-01T09:13:32.253 回答
1

9287695/1024/1024=8.86
9287695/1000/1000=9.30
1 MB = 1024 KB = 1024*1024 字节

于 2012-09-01T09:13:33.567 回答
0

内存单位

Bit=a 1 or 0  
Byte=8 Bits  
Kilobyte=1024 Bytes  
Megabyte=1024 Kilobytes  
Gigabyte=1024 Megabytes  
Terabyte=1024 Gigabytes

所以 9287695 字节实际上是 8.86 MB

于 2012-09-01T09:15:22.843 回答
0

IT 界对于区分 Mebi* 和 Mega*、Kibi* 和kilo* 存在很多困惑。您实际上是完全正确的,因为 8.86 的正确后缀应该是“MiB”而不是“MB”。

这是因为 1 MiB = 1024 KiB 和 1 KiB = 1024 B。但是 1 MB = 1000 kB 和 1 kB = 1000 B。

从而混乱。

所以 8.86 是 OK ( (9287695/1024)/1024 = 8,857) 只要是8.86 MiB.

请参阅此处了解更多信息:http ://en.wikipedia.org/wiki/Mebibyte

于 2012-09-01T09:17:15.937 回答