其实是对 "千"(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块吧”,肯定会闹笑话的。