2013-10-28 35 views
-1

如何格式化負數是這樣嗎?大負數格式

-5000 -> -5 k 
-1000000 -> -1 M 
-2700000000 -> -2.7 B 
+2

應該不是第一個是'-50 k'? – Yuck

回答

3

這裏有一個功能,您可以使用:

function format_number(num) { 
    var identifiers = ['k', 'M', 'B']; 
    var identifierLengthMinusOne = identifiers.length - 1; 
    var identifierOffset = -1; 
    var isNegative = (num < 0); 

    num = Math.abs(num); 

    while (num >= 1000 && identifierOffset < identifierLengthMinusOne) { 
     num /= 1000; 
     identifierOffset++; 
    } 

    return (isNegative ? num * -1 : num) + (identifierOffset > -1 ? ' ' + identifiers[identifierOffset] : ''); 
} 

> format_number(-500) 
"-500" 

> format_number(-50000) 
"-50 k" 

> format_number(-50000000) 
"-50 M" 

> format_number(-50000000000) 
"-50 B" 

> format_number(-50000000000000) 
"-50000 B" 
+0

當我把'-50000000000000000000000000'作爲參數,我得到'「-50.00000000000001未定義」'。再次浮點樂趣;) –

+0

@ Qantas94Heavy對此深感抱歉 - 優化我錯過了可變檢查代碼的時候('identifierLengthMinusOne'應該是'identifierOffset h2ooooooo

0

檢查:

function intToString (value) { 
    var suffixes = ["", "k", "m", "b","t"]; 
    var suffixNum = Math.floor((""+value).length/3); 
    var shortValue = parseFloat((suffixNum != 0 ? (value/Math.pow(1000,suffixNum)) : value).toPrecision(2)); 
    if (shortValue % 1 != 0) shortNum = shortValue.toFixed(1); 
    return shortValue+suffixes[suffixNum]; 
} 

用法:

intToString (-5000)