Fix another rounding bug with SI-format.

Turns out 1400 * .001 is 1.4000000000000001, but 1400 / 1000 is 1.4.
This commit is contained in:
Mike Bostock 2012-04-25 22:18:02 -07:00
Родитель c384fad0b3
Коммит 00bc3f05a7
5 изменённых файлов: 11 добавлений и 10 удалений

6
d3.v2.js поставляемый
Просмотреть файл

@ -661,7 +661,7 @@ d3.format = function(specifier) {
// Apply the scale, computing it from the value's exponent for si format.
if (scale < 0) {
var prefix = d3.formatPrefix(value, precision);
value *= prefix.scale;
value = prefix.scale(value);
suffix = prefix.symbol;
} else {
value *= scale;
@ -730,12 +730,12 @@ d3.formatPrefix = function(value, precision) {
};
function d3_formatPrefix(d, i) {
var k = Math.pow(10, Math.abs(8 - i) * 3)
return {
scale: Math.pow(10, (8 - i) * 3),
scale: i > 8 ? function(d) { return d / k; } : function(d) { return d * k; },
symbol: d
};
}
/*
* TERMS OF USE - EASING EQUATIONS
*

8
d3.v2.min.js поставляемый

Различия файлов скрыты, потому что одна или несколько строк слишком длинны

Просмотреть файл

@ -43,7 +43,7 @@ d3.format = function(specifier) {
// Apply the scale, computing it from the value's exponent for si format.
if (scale < 0) {
var prefix = d3.formatPrefix(value, precision);
value *= prefix.scale;
value = prefix.scale(value);
suffix = prefix.symbol;
} else {
value *= scale;

Просмотреть файл

@ -12,9 +12,9 @@ d3.formatPrefix = function(value, precision) {
};
function d3_formatPrefix(d, i) {
var k = Math.pow(10, Math.abs(8 - i) * 3);
return {
scale: Math.pow(10, (8 - i) * 3),
scale: i > 8 ? function(d) { return d / k; } : function(d) { return d * k; },
symbol: d
};
}

Просмотреть файл

@ -78,6 +78,7 @@ suite.addBatch({
assert.strictEqual(f(999.5), "999.5");
assert.strictEqual(f(999500), "999.5k");
assert.strictEqual(f(1000), "1k");
assert.strictEqual(f(1400), "1.4k");
assert.strictEqual(f(1500.5), "1.5005k");
assert.strictEqual(f(.000001), "1μ");
},