2
這是我的代碼:幹工程符號執行
function engineeringNotation(number) {
var space = ' ';
// Giga
if(number >= 1e10)
return (number/1e9).toFixed(1) + space + 'G';
else if(number >= 1e9)
return (number/1e8).toFixed(0)/10 + space + 'G';
// Mega
else if(number >= 1e7)
return (number/1e6).toFixed(1) + space + 'M';
else if(number >= 1e6)
return (number/1e5).toFixed(0)/10 + space + 'M';
// Kilo
else if(number >= 1e4)
return (number/1e3).toFixed(1) + space + 'k';
else if(number >= 1e3)
return (number/1e2).toFixed(0)/10 + space + 'k';
// Unit
else if(number >= 1e1)
return (number/1e0).toFixed(0) + space + '';
else
return (number/1e-1).toFixed(0)/10 + space + '';
}
基本上,它需要一個號碼,在「工程記」其返回到小數點後一位。例如,1234
變成1.2 k
。我覺得我重複了很多。上面的代碼可以改進和幹掉嗎?
您可以計算基數10的對數並消除所有的比較。您可以使用數組或對象將指數映射到字母。 – Pointy 2013-02-14 15:07:14
這可能更適合[codereview.stackexchange.com](http://codereview.stackexchange.com/)。 – 2013-02-14 15:07:16