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