2012-12-11 4 views
8

Ich bin für d3.formatFormatiert eine Zahl mit SI Präfix, mit fester Anzahl von Dezimalstellen

Die verfügbaren Typenwerte sind über den verfügbaren Typen suchen:

Exponent („e“) - Verwenden Sie Number.toExponential.

allgemein ("g") - verwenden Sie Number.toPrecision.

behoben ("f") - verwenden Sie Number.toFixed.

Integer ("d") - Verwenden Sie Number.toString, aber ignorieren Sie alle nicht ganzzahligen Werte.

gerundet ("r") - wie feste, aber runde bis präzise signifikante Ziffern.

Prozentsatz ("%") - wie festgelegt, aber multiplizieren mit 100 und Suffix mit "%".

gerundeter Prozentsatz ("p") - wie gerundet, aber multiplizieren mit 100 und Suffix mit "%".

SI-Präfix ("s") - wie abgerundet, aber mit einer Einheit suffixed wie "9.5M" oder "1.00μ".

https://github.com/mbostock/d3/wiki/Formatting#wiki-d3_format

Was würde Ich mag ein SI-Präfix, wie fest ist nicht abgerundet ist ein solches Format Option gibt es?

Einige Beispiele:

var format = d3.format('.1s'); 
format(12600000); // Would like 12.6M get 10M 
format(12400000); // Would like 12.4M get 10M 
format(1240000); // Would like 1.2M get 1M 
format(1290000); // Would like 1.3M get 1M 

Antwort

9

Du hast Recht, es fast. Mit d3.formatPrefix() kann man das SI-Präfix bekommen. Um die gerundete Zahl ohne Dezimalstellen zu bekommen, benutzte ich Javascript's .toFixed():

var prefix = d3.formatPrefix(137594020); 
console.log(prefix.symbol); // "M" 
console.log(prefix.scale(137594020).toFixed()); // 138 

var prefix = d3.formatPrefix(13759402); 
console.log(prefix.symbol); // "M" 
console.log(prefix.scale(13759402).toFixed()); // 14 

var prefix = d3.formatPrefix(1375); 
console.log(prefix.symbol); // "k" 
console.log(prefix.scale(1375).toFixed()); // 1 

Sie können versuchen, es selbst bei jsfiddle.

+4

zu ändern, wie dies in d3 v4 erreicht werden könnte? –

0

Sie brauchen nur Ihre Jede Idee

d3.format('.1s'); 

von

d3.format('.3s'); 

console.log(d3.format(".3s")(12600000));
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

Verwandte Themen