2011-05-31 63 views
0

我有一個數字,目前是1,657,108,700和增長。不過,我希望它顯示爲 1,657,108kJavascript格式的數字asin C#

javascript或html有一個構建函數來做到這一點?

該值正在通過JavaScript設置爲HTML中的跨度字段。

[編輯]

從我得到了我的方法儘可能的評論:

var start = '1,657,108,700';     
start = (start/1000).toFixed(0);          
var finish = ''; 
while (start.length > 3) 
{  
    finish = ','.concat(start.substring(start.length - 3, 3), finish);  
    start = start.substring(0, start.length - 3); 
}; 
finish = start + finish + "k"; 
return finish; 

然而這將返回,而不是1,657,108k 1,65,7k ..任何人都知道爲什麼嗎?

+0

可能的重複:http://stackoverflow.com/questions/2134161/format-number-like-stackoverflow包含千位後綴k,http://stackoverflow.com/questions/3177855/how-to-format-numbers-similar-to-stack-overflow-reputation-format – sfat 2011-05-31 07:07:32

+0

@Andrei Sfat:this絕不是它們中的任何一個的重複。首先是C#和我的問題是爲JavaScript。第二種方法爲我返回NaNk。 – 2011-05-31 07:19:25

+0

沒有我知道的功能,但它實現起來微不足道。只需除以1000,做Math.floor(或圓),然後附加'k'。 – tjameson 2011-05-31 07:31:31

回答

1
var formattedNumber = Math.round(yourNumber/1000).toLocaleString() + "k"; 

將上述內容轉換爲函數或不適當。我不知道有一個函數可以做到這一點,或者是爲了迎合非英語版本的「k」(假設有一些),但至少toLocaleString()應該照顧逗號與完全解決數千個問題。

更新:我發佈上面沒有測試它;當我嘗試它時,我發現toLocaleString()格式1234爲1,234.00。我曾想過通過使用正則表達式替換來除去尾隨零,除非我不能確定toLocaleString()將用於小數點的字符,所以這是行不通的。我想你可以在「控制」編號(例如1.1)上編寫一些使用toLocaleString()的代碼,以便在運行時查看它用於小數的字符。

更新2更新後的問題,手動插入逗號,我沒有這樣說:

var unformattedNumber = 123456; 
var a = unformattedNumber.toString().split(""); 
for (var i=a.length-3; i >0; i-=3) 
    a.splice(i,0,","); 
var formattedNumber = a.join("") + "k"; 
+0

更新的答案完美地工作 – 2011-05-31 08:43:12