2012-10-19 19 views
5

मेरी जावास्क्रिप्ट लाइब्रेरी के माध्यम से, मैं एक स्ट्रिंग के साथ समाप्त होता हूं जो एक संख्या का प्रतिनिधित्व करता है। अब मैं इसके बजाय स्ट्रिंग कॉन्सटेनेशन किए बिना उस नंबर पर एक अतिरिक्त प्रीफ़ॉर्म करना चाहता हूं। समाधान आसान है ( How do I add an integer value with javascript (jquery) to a value that's returning a string?, How to make an addition instead of a concatenation) यदि आपका नंबर हमेशा पूर्णांक में है। हालांकि मेरी स्ट्रिंग एक फ्लोट या एक पूर्णांक हो सकती है, और इसके अतिरिक्त, और मुझे नहीं पता कि यह कौन सा होगा। क्या यह सुनिश्चित करने का कोई तरीका है कि अतिरिक्त फ्लोट या पूर्णांक के बावजूद अतिरिक्त होता है?स्ट्रिंग कॉन्सटेनेशन (हमेशा पूर्णांक जोड़ने नहीं) के बजाय जावास्क्रिप्ट जोड़ को कैसे सुनिश्चित करें

उत्तर

10

parseFloat का उपयोग करने का प्रयास करें। इनपुट चर को फ्लोट में परिवर्तित कर दिया जाएगा, जो काम करेगा चाहे स्ट्रिंग में पूर्णांक या फ़्लोट हो। आपका परिणाम हमेशा एक फ्लोट होगा।

+0

जब तक यह 'है NaN' – jcolebrand

+0

' parseInt' से कोई अलग .... –

+0

तो , मुझे चिंता थी कि अगर मैंने 'parseFloat()' का उपयोग किया है तो मैं "5" के बजाय "5.0" के साथ समाप्त होगा, लेकिन जाहिर है कि यह मामला नहीं है? – dnc253

4

यदि आपको पूर्णांक दिया गया है तो भी हमेशा parseFloat का उपयोग करना सुरक्षित है। यदि आपको उचित रूपांतरण का उपयोग करना चाहिए, तो आप दशमलव बिंदु के लिए match और उपयुक्त फ़ंक्शन का उपयोग कर सकते हैं।

+0

जब तक कि यह 'NaN' – jcolebrand

+0

नहीं है, मैंने आपके विचार को मेरे उत्तर के लंबे संस्करण में शामिल किया है, क्या ऐसा है आपने जो सोचा था उसके साथ मिलकर? – jcolebrand

+0

यूप, ऐसा कुछ है जो मेरा मतलब था :) –

2

मुझे लगता है कि फ्लोट जोड़ पर्याप्त है, और यदि ऐसा नहीं है, तो आपको गहरी खुदाई करने की आवश्यकता होगी।

function alwaysAddAsNumbers(numberOne, numberTwo){ 
    var parseOne = parseFloat(numberOne), 
     parseTwo = parseFloat(numberTwo); 
    if (isNaN(parseOne)) parseOne = 0; 
    if (isNaN(parseTwo)) parseTwo = 0; 
    return parseOne + parseTwo; 
} 

लेने के लिए क्या @Asad कहा, आप के बजाय यह करने के लिए चाहते हो सकता है:

function alwaysAddAsNumbers(a, b){ 
    var m = 0, 
     n = 0, 
     d = /\./, 
     f = parseFloat, 
     i = parseInt, 
     t = isNaN, 
     r = 10; 
    m = (d.test(a)) ? f(a) : i(a,r); 
    n = (d.test(b)) ? f(b) : i(b,r); 
    if (t(m)) m = 0; 
    if (t(n)) n = 0; 
    return m + n; 
} 

यह हमेशा आप कम से कम एक शून्य उत्पादन दे देंगे, और यदि या तो एक है आपको बता नहीं है NaN

+0

NaN वापस करने के लिए निश्चित रूप से NaN वापस करने के लिए बेहतर है? –

+0

अच्छी जानकारी जानने के लिए, लेकिन मैं NaN से चिंतित नहीं हूं। – dnc253

+0

idk, कल्पना क्या है? ;-) ... आपको NaN के साथ चिंतित होना चाहिए क्योंकि यह आपको पहले गधे में गधे में काट देगा। – jcolebrand

0

किसी कारण से .... कौन जानता है ???

पार्सफ्लैट कामों का उपयोग .... जब parseInt नहीं करता ... जाहिर है वे हमेशा एक ही नहीं होते हैं।

FWIW .... मैं से डेटा तत्व "जोड़ने" कर रहा हूं "जाँच" चेक बॉक्स यहाँ ...

var AddOns = 0; 

    $('.broadcast-channels').each(function(){    
     if ($(this).prop("checked")) {        
      var thisAddOn = parseFloat($(this).data('channel'));  
      AddOns = AddOns + thisAddOn;          
     }   
});