2011-02-01 13 views
9

के अधिकार के लिए शून्य अलग करना मैं एक समारोह है कि मैं (मुद्रा प्रतीकों के रूप में परिभाषित) तार से अवांछित पात्रों को दूर करने का उपयोग कर रहा है तो एक संख्या के रूप में मान है से parseFloat() रोकूँ। जब मूल्य लौटने, मैं निम्नलिखित कॉल कर रहा हूँ:मैं कैसे दशमलव

return parseFloat(x);

समस्या मैं यह है कि "0.00" मैं 0.00 (दो दशमलव के साथ एक नाव) वापस प्राप्त करने की उम्मीद जब एक्स ==। क्या मैं बजाय बस 0.

मैं भी निम्नलिखित की कोशिश की है है:

return parseFloat(x).toFixed(2);

और अभी भी केवल 0 वापस मिलता है। क्या मैं कुछ भूल रहा हूँ? किसी भी तरह की सहायता का स्वागत किया जाएगा।

धन्यवाद !!

उत्तर

4

सरल:

function decimalPlaces(float,length) { 
    ret = ""; 
    str = float.toString(); 
    array = str.split("."); 
    if(array.length==2) { 
    ret += array[0] + "."; 
    for(i=0;i<length;i++) { 
     if(i>=array[1].length) ret += '0'; 
     else ret+= array[1][i]; 
    } 
    } 
    else if(array.length == 1) { 
    ret += array[0] + "."; 
    for(i=0;i<length;i++) { 
     ret += '0' 
    } 
    } 

    return ret; 
} 

document.write(decimalPlaces(3.123,6)); 
+0

मुझे लगता है कि यह समाधान है क्योंकि आपको इसकी आवश्यकता है प्रिंट के लिए स्ट्रिंग, संख्या नहीं, क्योंकि मैं आपके लिए सोचता हूं 3.00 == 3 लेकिन आप संख्या को दो दशमलव स्थानों के साथ मुद्रित करना चाहते हैं। –

+0

यह गोल नहीं है? अगर 2.009 होना चाहिए 2.01 – Mahi

10

इस काम करना चाहिए:

return parseFloat(x).toFixed(2); 

आप फ़ायरबग में इस चलाकर यह परीक्षण कर सकते हैं:

var x = '0.00'; 
alert(parseFloat(x).toFixed(2)); 
+0

ओपी कहना नहीं था वह उस की कोशिश की और यह काम नहीं किया? –

+0

@Ted हॉप - क्या ओपी राज्यों, मैं IE 8 में यह कोशिश की है, सफारी, Firebug और क्रोम जे एस कंसोल, मैं विक्टर इस के लिए +1 दे रहा हूँ, के रूप में यह मैं के रूप में कम से कम जहाँ तक सही है की परवाह किए बिना परीक्षण कर सकते हैं – jball

+0

@jball - मैं सहमत हूं ... इसे काम करना चाहिए, लेकिन ऐसा नहीं है। मैं उम्मीद कर रहा था कि किसी ने पहले इसी तरह के व्यवहार को देखा था और मुझे ऐसा क्यों नहीं दे सकता था कि ऐसा क्यों नहीं हो सकता है। – user599144

7

parseFloat() एक चल बिन्दु संख्या में एक स्ट्रिंग बदल जाता है। यह एक बाइनरी मान है, दशमलव प्रतिनिधित्व नहीं, इसलिए दशमलव बिंदु के दाईं ओर शून्य की संख्या की अवधारणा भी लागू नहीं होती है; यह सब इस बात पर निर्भर करता है कि इसे स्ट्रिंग में वापस कैसे स्वरूपित किया जाता है। toFixed के बारे में, मैं एक संख्या के लिए चल बिन्दु संख्या परिवर्तित करने का सुझाव चाहते हैं:

new Number(parseFloat(x)).toFixed(2); 
+0

यदि x = '2.00' या' 2.00'' है, तो भी आपको स्ट्रिंग प्रस्तुति '2.00'' मिलती है। –

+0

@ConAntonakos - ठीक है, हाँ, यह बात है। आपके पास फ़्लोटिंग पॉइंट मान में "पिछला शून्य" नहीं हो सकता है, केवल मूल्य के स्ट्रिंग प्रस्तुति में। –

+0

मुझे एहसास है, लेकिन मैं उम्मीद कर रहा था कि आप इसे स्ट्रिंग पर मजबूर करने के बिना फ़्लोटिंग पॉइंट को बनाए रख सकते हैं। :( –

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