2011-05-04 16 views
6

मैं नीचे के रूप में जावास्क्रिप्ट का उपयोग कर संख्या स्वरूपित करना चाहते हैं:जावास्क्रिप्ट का उपयोग कर संख्याओं को कैसे प्रारूपित करें?

10.00=10,00 
1,000.00=1.000,00 
+0

आपका मतलब है? http://stackoverflow.com/questions/51564/javascript-culture-sensitive-currency-formatting –

+0

संभावित डुप्लिकेट? http://stackoverflow.com/questions/4843691/javascript-regex-replacing-the-last-dot-for-a-comma – Pav

+0

@ छाया विज़ार्ड: नहीं यह वही नहीं है। मुझे उस स्क्रिप्ट का उपयोग करके 1,50,000.00 के रूप में 1.50.000,00 के परिणाम नहीं मिल सका .. –

उत्तर

1

जावास्क्रिप्ट इस कार्यक्षमता में ही प्रदान नहीं करता है, लेकिन तीसरे पक्ष के कार्य करता है जो चारों ओर आप क्या चाहते हैं कर सकते हैं की एक संख्या हैं।

नोट, आप जिस भी विधि का उपयोग करते हैं, आपको केवल प्रदर्शन उद्देश्यों के लिए परिणामस्वरूप स्ट्रिंग का उपयोग करने के लिए सावधान रहना चाहिए - दशमलव बिंदु को अल्पविराम में परिवर्तित करने के बाद यह जावास्क्रिप्ट में मान्य संख्या मान नहीं होगा।

सबसे तेज़ समाधान जो मैं पेशकश कर सकता हूं वह है number_format() phpJS लोगों द्वारा लिखित कार्य का उपयोग करना। उन्होंने number_format() समेत सामान्य रूप से उपयोग किए गए PHP फ़ंक्शंस के लोड के जावास्क्रिप्ट संस्करणों को कार्यान्वित किया है, और यह फ़ंक्शन वही करेगा जो आप चाहते हैं।

लिंक यहाँ देखें: (यह बहुत संदिग्ध मान का वैसे भी है) http://phpjs.org/functions/number_format

मैं पूरी phpJS पुस्तकालय लेने के बारे में परेशान नहीं होगा, लेकिन सिर्फ पृष्ठ पर दिखाए गए 20 के करीब लाइन समारोह हड़पने ऊपर लिंक और इसे अपने ऐप में पेस्ट करें।

यदि आप अधिक लचीला समाधान चाहते हैं, तो वहां कई जेएस फ़ंक्शन हैं जो सी से printf() फ़ंक्शन को अनुकरण करते हैं। एसओ कवर पर पहले से ही एक अच्छा सवाल है। यहां देखें: JavaScript equivalent to printf/string.format

आशा है कि मदद करता है।

18

प्रत्येक ब्राउज़र Number.prototype.toLocaleString() का समर्थन करता है, जो किसी स्थान से स्थानीयकृत स्ट्रिंग को वापस करने का इरादा रखता है। हालांकि, विनिर्देश इसे निम्नानुसार परिभाषित करता है:

एक स्ट्रिंग मान उत्पन्न करता है जो मेजबान पर्यावरण के वर्तमान लोकेल के सम्मेलनों के अनुसार स्वरूपित संख्या के मान का प्रतिनिधित्व करता है। यह फ़ंक्शन कार्यान्वयन-निर्भर है, और यह toString जैसी चीज़ को वापस करने के लिए स्वीकार्य है, लेकिन प्रोत्साहित नहीं किया जाता है।

कार्यान्वयन-निर्भर का मतलब है कि यह विक्रेता पर निर्भर करता है कि परिणाम कैसा दिखाई देगा, और परिणामस्वरूप इंटरऑपरेबिलिटी के मुद्दों में परिणाम होगा।

इंटरनेट एक्सप्लोरर (आईई 5.5 से आईई 9) जो आप चाहते हैं उसके करीब आता है और मुद्रा शैली में संख्या स्वरूपित करता है - हजारों विभाजक और 2 दशमलव स्थानों पर तय किया जाता है।

फ़ायरफ़ॉक्स (2+) हजारों विभाजक और दशमलव स्थानों के साथ संख्या को प्रारूपित करता है लेकिन केवल लागू होने पर।

ओपेरा, क्रोम & सफारी उत्पादन toString() रूप में एक ही है - कोई हज़ार विभाजक, दशमलव स्थान ही यदि आवश्यक हो।

समाधान

मैं निम्नलिखित कोड (an old answer of mine के आधार पर) कोशिश करते हैं और परिणाम को सामान्य बनाने में इंटरनेट एक्सप्लोरर के विधि की तरह काम करने के लिए के साथ आया था:

(function (old) { 
    var dec = 0.12 .toLocaleString().charAt(1), 
     tho = dec === "." ? "," : "."; 

    if (1000 .toLocaleString() !== "1,000.00") { 
     Number.prototype.toLocaleString = function() { 
      var neg = this < 0, 
       f = this.toFixed(2).slice(+neg); 

      return (neg ? "-" : "") 
        + f.slice(0,-3).replace(/(?=(?!^)(?:\d{3})+(?!\d))/g, tho) 
        + dec + f.slice(-2); 
     } 
    } 
})(Number.prototype.toLocaleString); 

इस का उपयोग करेगा ब्राउज़र की बनाया यदि यह उपलब्ध है, तो स्थानीयकरण में, जबकि अन्य मामलों में ब्राउज़र के डिफ़ॉल्ट लोकेल में शानदार रूप से गिरावट आती है।

कार्य डेमो: http://jsfiddle.net/R4DKn/49/

+3

मैं इस समाधान के लिए मतदान कर रहा हूं, क्योंकि यह उचित स्थानीयकरण का समर्थन करता है। हम में से कुछ डॉट के बजाय दशमलव कॉमा का उपयोग कर रहे हैं :-) –

+0

+1 - केवल एक चेतावनी: नकारात्मक संख्याओं के साथ ठीक से निपटने के लिए तय करने की आवश्यकता है। वर्तमान में -100 रिटर्न - उदाहरण के लिए 100.00। –

+0

बस स्पष्ट होने के लिए। इस मुद्दे को देखने के लिए आपको कॉल करने की आवश्यकता होगी (-100) .toLocaleString() –

3

मैं इस समाधान NumberFormat का उपयोग कर पता लेकिन यह स्ट्रिंग के लिए मूल्यों को परिवर्तित करने के लिए आवश्यक है। https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/NumberFormat

// Remove commas 
number = "10,000.00".replace(/,/g, ''); 

// Create a NumberFormat type object 
var formatter = new Intl.NumberFormat('de-DE', { 
    minimumFractionDigits: 2 
}); 

// Apply format 
console.log(formatter.format(number)); 

output:10.000,00 
संबंधित मुद्दे

 संबंधित मुद्दे