2017-01-28 73 views
1

我希望d3將我的編號格式化爲2位小數,只有它具有十進制值。 另外,我希望它能夠使用一種格式的函數。只有具有小數位的格式編號爲2位小數

現在,我一直在使用它。有什麼辦法可以改善這種情況,以解決問題嗎?

d3.format(",.2f")(10101); //10,101.00 which must be displayed as 10,000 only 

d3.format(",.2f")(12334.2); //12,334.20 this is okay 

回答

1

我希望它有一個單一的格式功能

很好地工作,這是不可能的。 D3格式功能不能將修改爲以便您傳遞給他們的號碼。

但是,您可以有兩個格式函數,並測試以查看您傳遞的數字是否具有小數位數。這是一種可能的測試方法:

number % 1 

其中返回整數爲0。

然後,在ternary operator,你可以選擇要使用的d3.format功能:

!(number % 1) ? someFormat(number) : otherFormat(number) 

這裏是一個演示:

var formatInteger = d3.format(","); 
 
var formatDecimal = d3.format(",.2f"); 
 

 
var number1 = 10101; 
 
var number2 = 12334.2; 
 

 
function format(number){ 
 
return !(number % 1) ? formatInteger(number) : formatDecimal(number) 
 
} 
 

 
console.log(format(number1)) 
 
console.log(format(number2))
<script src="https://d3js.org/d3.v4.min.js"></script>

相關問題