如何在D3格式化程序中禁用某些SI前缀?

时间:2015-11-26 02:01:35

标签: d3.js format

var format = d3.format('s');
format(1000); // 1k, good
format(1000000); //1M, good
format(0.1); // 100m, not necessary, would be better to show 0.1 directly

我认为大多数时候SI前缀是' m'没有必要。我该如何禁用它?

1 个答案:

答案 0 :(得分:1)

没有内置的方法可以按照您想要的方式自定义d3.format()的输出。但是,您可以定义两种不同的格式:一种用于包含SI前缀的大数字,而另一种用于小数字将省略前缀。将这些包装在函数中将为您提供自定义格式函数:

var formatLarge = d3.format('s');
var formatSmall = d3.format('-.g');
var customFormat = function(val) { 
    return Math.abs(val) < 1 ? formatSmall(val) : formatLarge(val);
};

console.log(customFormat(1000));    // 1k
console.log(customFormat(1000000)); // 1M
console.log(customFormat(0.1));     // 0.1