25 lines
736 B
JavaScript
25 lines
736 B
JavaScript
import "precision";
|
|
import "round";
|
|
import "../math/abs";
|
|
|
|
var d3_formatPrefixes = ["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"].map(d3_formatPrefix);
|
|
|
|
d3.formatPrefix = function(value, precision) {
|
|
var i = 0;
|
|
if (value = +value) {
|
|
if (value < 0) value *= -1;
|
|
if (precision) value = d3.round(value, d3_format_precision(value, precision));
|
|
i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
|
|
i = Math.max(-24, Math.min(24, Math.floor((i - 1) / 3) * 3));
|
|
}
|
|
return d3_formatPrefixes[8 + i / 3];
|
|
};
|
|
|
|
function d3_formatPrefix(d, i) {
|
|
var k = Math.pow(10, abs(8 - i) * 3);
|
|
return {
|
|
scale: i > 8 ? function(d) { return d / k; } : function(d) { return d * k; },
|
|
symbol: d
|
|
};
|
|
}
|