php 版本 function myFileSizeSwitch($baseNumber,$singleFractional=true) { $unitDivisors = array(1073741824, 1048576, 1024, 1); $unitLabels = array("GB", "MB", "KB", "B"); $i;$unit;$unitDivisor;$unitLabel; $unitLabelsLen = count($unitLabels); $unitDivisorsLen = count($unitDivisors); if ($baseNumber == 0) { return "0 " + $unitLabels[$unitLabelsLen - 1]; } if ($singleFractional) { $unit = $baseNumber; $unitLabel = $unitLabelsLen >= $unitDivisorsLen ? $unitLabels[$unitDivisorsLen - 1] : ""; for ($i = 0; $i < $unitDivisorsLen; $i++) { if ($baseNumber >= $unitDivisors[$i]) { $unit = round($baseNumber / $unitDivisors[$i],2); $unitLabel = $unitLabelsLen >= $i ? " " . $unitLabels[$i] : ""; break; } } return $unit . $unitLabel; } else { $formattedStrings = array(); $remainder = $baseNumber; for ($i = 0; $i < $unitDivisorsLen; $i++) { $unitDivisor = $unitDivisors[$i]; $unitLabel = $unitLabelsLen > $i ? " " . $unitLabels[$i] : ""; $unit = $remainder / $unitDivisor; if ($i < $unitDivisorsLen -1) { $unit = floor($unit); } else { $unit = round($unit,2); } if ($unit > 0) { $remainder = $remainder % $unitDivisor; array_push($formattedStrings,$unit.$unitLabel); } } return implode(" ",$formattedStrings); } } js 版本 function myFilesizeSwitch(baseNumber) { var unitDivisors = [1073741824, 1048576, 1024, 1], unitLabels = ["GB", "MB", "KB", "B"],singleFractional=true; var i, unit, unitDivisor, unitLabel; if (baseNumber === 0) { return "0 " + unitLabels[unitLabels.length - 1]; } if (singleFractional) { unit = baseNumber; unitLabel = unitLabels.length >= unitDivisors.length ? unitLabels[unitDivisors.length - 1] : ""; for (i = 0; i < unitDivisors.length; i++) { if (baseNumber >= unitDivisors[i]) { unit = (baseNumber / unitDivisors[i]).toFixed(2); unitLabel = unitLabels.length >= i ? " " + unitLabels[i] : ""; break; } } return unit + unitLabel; } else { var formattedStrings = []; var remainder = baseNumber; for (i = 0; i < unitDivisors.length; i++) { unitDivisor = unitDivisors[i]; unitLabel = unitLabels.length > i ? " " + unitLabels[i] : ""; unit = remainder / unitDivisor; if (i < unitDivisors.length -1) { unit = Math.floor(unit); } else { unit = unit.toFixed(2); } if (unit > 0) { remainder = remainder % unitDivisor; formattedStrings.push(unit + unitLabel); } } return formattedStrings.join(" "); } }