2012-12-11 10 views
8

मैं d3.formatSI उपसर्ग के साथ एक नंबर स्वरूपित, दशमलव

के लिए उपलब्ध प्रकार के ऊपर देख रहा हूँ की निश्चित संख्या के साथ उपलब्ध प्रकार मान हैं:

प्रतिपादक ("ई") - संख्या का उपयोग करें .toExponential।

सामान्य ("जी") - संख्या का उपयोग करें। उपचार।

निश्चित ("एफ") - संख्या का उपयोग करें। टिक्स्ड।

पूर्णांक ("डी") - संख्या.toString का उपयोग करें, लेकिन किसी भी गैर-पूर्णांक मानों को अनदेखा करें।

गोलाकार ("आर") - निश्चित की तरह, लेकिन सटीक महत्वपूर्ण अंकों के लिए गोल।

प्रतिशत ("%") - निश्चित की तरह, लेकिन 100 से गुणा करें और "%" के साथ प्रत्यय।

गोलाकार प्रतिशत ("पी") - गोलाकार की तरह, लेकिन 100 से गुणा करें और "%" के साथ प्रत्यय।

एसआई-उपसर्ग ("एस") - गोलाकार की तरह, लेकिन एक इकाई के साथ "9.5 एम" या "1.00μ" जैसे प्रत्यय के साथ। एक SI-उपसर्ग की तरह गोल इस तरह के एक प्रारूप विकल्प मौजूद नहीं है तय हो गई है

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

क्या मैं चाहते हैं?

कुछ उदाहरण:

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 

उत्तर

9

आप लगभग यह अधिकार मिल गया। d3.formatPrefix() का उपयोग करके कोई भी एसआई उपसर्ग प्राप्त कर सकता है। दशमलव के बिना गोल संख्या प्राप्त करने के लिए, मैं 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 

तुम खुद jsfiddle पर कोशिश कर सकते हैं।

+4

किसी भी विचार है कि यह कैसे d3 v4 में पूरा किया जा सकता बदलने की जरूरत है? –

0

आप केवल अपने द्वारा

d3.format('.1s'); 

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>