U盘、硬盘等容量为什么不满16G、32G、500G等

其实是对 "千"(K) 的计算方法不一样,厂商是按1000计算的,而电脑或手机是按1024计算的;

/**
 * 换算
 * $ratio * $G_1024 = 1 * $G_1000
 * $ratio = (1 * $G_1000) / $G_1024
 * $ratio = 0.93132257461548 ≈ 0.931
 */
$G_1024 = 1 << 30;
$G_1000 = 1e9;
$ratio = $G_1000 / $G_1024;
var_dump($ratio); // 0.9313225746154

// 16G 实际大小
var_dump(16 * $ratio); // 14.901161193848 G

// 32G 实际大小
var_dump(32 * $ratio); // 29.802322387695 G

// 250G 实际大小
var_dump(250 * $ratio); // 232.83064365387 G

// 500G 实际大小
var_dump(500 * $ratio); // 465.66128730774 G

// 1000G (1T) 实际大小
var_dump(1000 * $ratio); // 931.32257461548 G

电脑是二进制的,所以1024计算方便,而厂商按1000计算也是为了方便;就像你去取钱,要是跟人家说“给我取个整,取1024块吧”,肯定会闹笑话的。

你可能感兴趣的:(U盘、硬盘等容量为什么不满16G、32G、500G等)