2012-12-11 12 views
8

sto guardando oltre il tipo disponibile per d3.formatFormattare un numero con prefisso SI, con il numero fisso di decimali

I valori di tipo disponibili sono:

esponente ("e") - utilizzare Number.toExponential.

generale ("g") - utilizzare Number.toPrecision.

corretto ("f") - utilizzare Number.toFixed.

intero ("d") - utilizza Number.toString, ma ignora tutti i valori non interi.

arrotondato ("r") - come fisso, ma arrotondato a cifre significative di precisione.

percentuale ("%") - come fisso, ma moltiplicare per 100 e suffisso con "%".

arrotondato in percentuale ("p") - come arrotondato, ma moltiplicato per 100 e suffisso con "%".

Prefisso SI ("s") - come arrotondato, ma con un'unità suffissibile come "9.5M" o "1.00μ".

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

Quello che vorrei è un SI-prefisso che è come non fisso arrotondato ha una tale opzione di formato esiste?

Alcuni esempi:

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 

risposta

9

È quasi azzeccato. Usando d3.formatPrefix() si può ottenere il prefisso SI. Per ottenere il numero arrotondato senza decimali, ho usato 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 

si può provare voi stessi a jsfiddle.

+4

Qualsiasi idea di come questo potrebbe essere realizzato in d3 v4? –

0

Hai solo bisogno di cambiare il vostro

d3.format('.1s'); 

da

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>

Problemi correlati