2017-01-28 50 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>

相关问题