2010-07-15 16 views
8

आप जानते हैं, जावास्क्रिप्ट के parseFloat समारोह ही काम करता है जब तक यह कोई अमान्य वर्ण को पूरा करती है, तो उदाहरण के लिएक्या पूरे स्ट्रिंग को पार्स करना संभव है?

parseFloat("10.123") = 10.123 
parseFloat("12=zzzz") = 12 
parseFloat("z12") = NaN 

अगर पूरे स्ट्रिंग नहीं है एक तरह से या parseFloat का कार्यान्वयन और NaN वापसी होगी वहाँ है एक मान्य फ्लोट नंबर?

उत्तर

17

इस बजाय का उपयोग करें:

var num = Number(value); 

तो फिर तुम कर सकते हैं:

if (isNaN(num)) { 
    // take proper action 
} 
+2

यह मेरे उत्तर से बेहतर विचार है :) – rfunduk

+0

यह सही है, धन्यवाद। मुझे अभी तक जवाब चिह्नित करने के लिए 8 मिनट का इंतजार करना होगा :) – mcm69

+1

बस कुछ विशिष्ट मामलों के बारे में सावधान रहें, उदाहरण: 'isNaN (parseFloat (" ")); // सत्य' और 'संख्या (" ") == 0; // true' – CMS

4

शायद कोशिश:

var f = parseFloat(someStr); 
if(f.toString() != someStr) { 
    // string has other stuff besides the number 
} 

अद्यतन: ऐसा मत करो, का उपयोग @ डीसीपी के विधि :)

+4

+1 जो उत्तर देने के लिए समस्या हल करता है और फिर ओपी को उस उत्तर का उपयोग करने के लिए इंगित करता है जिसे आप बेहतर मानते हैं। –

+0

यह वास्तव में इस समस्या को हल करने का एक बुरा तरीका है क्योंकि यह "12.5000" जैसे मूल्य के साथ काम नहीं करेगा। – HoLyVieR

+0

@ होलीवीर: हाँ, यह वास्तव में इस बात पर निर्भर करता है कि आपका डेटा कहां से आ रहा है। मूल्यों को क्रमबद्ध करने वाली अधिकांश भाषाएं शून्य के साथ पैड नहीं करतीं जबतक कि आप स्पष्ट रूप से ऐसा नहीं कहें। चूंकि 'संख्या()' इन प्रकार की समस्याओं को हल करता है (इसके स्वयं के कुछ चेतावनी के साथ) ऐसा करने की कोई आवश्यकता नहीं है। – rfunduk

0
var asFloat = parseFloat("12aa"); 
if (String(asFloat).length != "12aa".length) { 
    // The value is not completely a float 
} 
else { 
    // The value is a float 
} 
संबंधित मुद्दे