जावास्क्रिप्ट स्ट्रिंग चर को दशमलव / पैसे में बदलें


114

हम जावास्क्रिप्ट स्ट्रिंग चर को दशमलव में कैसे बदल सकते हैं?

क्या कोई फंक्शन है जैसे:

parseInt(document.getElementById(amtid4).innerHTML)

जवाबों:


240

हाँ - parseFloat

parseFloat(document.getElementById(amtid4).innerHTML);

के लिए स्वरूपण नंबर, का उपयोग toFixed:

var num = parseFloat(document.getElementById(amtid4).innerHTML).toFixed(2);

num अब दो दशमलव स्थानों के साथ स्वरूपित संख्या के साथ एक स्ट्रिंग है।


1
क्या हम उस दशमलव को 2 दशमलव अंकों के साथ बना सकते हैं जैसे कि 120.50? अभी मुझे 120.5 ही मिल रहे हैं।
वरदा

16
@PhilipWhitehouse को उद्धृत करने के लिए "कृपया, भविष्य में इसे पढ़ने वाले किसी भी व्यक्ति के लिए, मुद्रा को संग्रहीत करने के लिए फ्लोट का उपयोग न करें। आप सटीक और डेटा को ढीला कर देंगे। आपको इसे पूर्णांक संख्या (सेंट या पेनी इत्यादि) के रूप में संग्रहीत करना चाहिए और फिर पूर्व में परिवर्तित करना चाहिए। आउटपुट के लिए। " स्रोत: stackoverflow.com/questions/149055/…
SSH

@SSHThis जहाँ तक मुझे पता है कि जावास्क्रिप्ट में पूर्णांक प्रकार नहीं है। इसमें केवल एक संख्या प्रकार है जो सभी आंतरिक रूप से 64 बिट फ़्लोटिंग पॉइंट नंबरों के रूप में संग्रहीत हैं। आपकी बात अन्य भाषाओं के लिए मान्य है जिनके पूर्णांक प्रकार हैं जैसे C #, C ++, लेकिन वास्तव में जावास्क्रिप्ट के लिए नहीं।
साइमन ब्रानगविन

1
@SimonBrangwin उनकी बात अभी भी मान्य है, लेकिन शब्दार्थ भ्रमित हो सकता है। वह वास्तव में इसका मतलब है "केवल जावास्क्रिप्ट में पूरी संख्या के रूप में मुद्रा स्टोर करें क्योंकि वे फ्लोटिंग पॉइंट नंबर के रूप में संग्रहीत किए जाएंगे"।
जोश नं।

1
बस एक अनुस्मारक: parseFloat('22w')है 22और parseFloat('w22')हैNaN
आईजी पास्कुअल

65

आप Numberकंस्ट्रक्टर / फ़ंक्शन का उपयोग भी कर सकते हैं (पूर्णांक और फ़्लोट्स के लिए मूलांक और उपयोग करने की कोई आवश्यकता नहीं):

Number('09'); /=> 9
Number('09.0987'); /=> 9.0987

वैकल्पिक रूप से एंडी ई ने कहा टिप्पणियों में आप +रूपांतरण के लिए उपयोग कर सकते हैं

+'09'; /=> 9
+'09.0987'; /=> 9.0987

यह IE11 द्वारा समर्थित नहीं है
पैंट

@ कि नंबर ES6 में निर्मित वस्तु के विस्तार के बारे में है , का उपयोग करने में सक्षम होने के बारे में नहींNumber
KooiInc


10
var formatter = new Intl.NumberFormat("ru", {
  style: "currency",
  currency: "GBP"
});

alert( formatter.format(1234.5) ); // 1 234,5 £

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/NumberFormat


मुझे पता नहीं था कि यह अस्तित्व में है।
प्रोटोमेटा

अब तक का सबसे अच्छा जवाब। parseFloat? सटीक नरक? जी नहीन् धन्यवाद! Intl.NumberFormatइसे पकड़ लिया।
जोशुआ बर्न्स

2

संख्याओं के साथ तुलना करने और खेलने के लिए जावास्क्रिप्ट कार्यों पर भरोसा करना काफी जोखिम भरा है। जावास्क्रिप्ट में (0.1 + 0.2 == 0.3) गोलाई त्रुटियों के कारण गलत वापस आ जाएगी। Math.js लाइब्रेरी का उपयोग करें।


1

एक आसान शॉर्ट हैंड तरीका होगा + x का उपयोग करना। यह साइन को बरकरार रखता है और साथ ही दशमलव संख्या को भी। अन्य विकल्प parseFloat (x) का उपयोग करना है। ParseFloat (x) और + x के बीच अंतर एक रिक्त स्ट्रिंग + x रिटर्न 0 के लिए है, जहां parseFloat (x) NaN देता है।


1

मैंने ऐसा करने के लिए थोड़ा सहायक कार्य किया और सभी विकृत आंकड़ों को पकड़ा

function convertToPounds(str) { 
    var n = Number.parseFloat(str);
    if(!str || isNaN(n) || n < 0) return 0;
    return n.toFixed(2);
}

डेमो यहाँ है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.