2008-10-21 23 views

उत्तर

11

आपके पास जावास्क्रिप्ट के साथ सबसे अच्छा है आपकी संख्याओं पर फिक्स्ड() और toPrecision() फ़ंक्शन।

var num = 10; 
var result = num.toFixed(2); // result will equal 10.00 

num = 930.9805; 
result = num.toFixed(3); // result will equal 930.981 

num = 500.2349; 
result = num.toPrecision(4); // result will equal 500.2 

num = 5000.2349; 
result = num.toPrecision(4); // result will equal 5000 

num = 555.55; 
result = num.toPrecision(2); // result will equal 5.6e+2 

मुद्रा, अल्पविराम, और अन्य प्रारूपों को या तो आप या तृतीय पक्ष लाइब्रेरी द्वारा किया जाना होगा।

0

आप जावास्क्रिप्ट printf के लिए गूगल, तो आप कार्यान्वयन के बहुत सारे मिल जाएगा।

+0

जो सभी को अपने स्वयं के दोषों की है। – holli

1

सुधार स्क्रिप्ट (पिछले बग्गी, खेद था, ईमानदार मैं exaustively या तो इस परीक्षण नहीं किया जा करने के लिए), यह php number_format तरह काम करता है:

function formatFloat(num,casasDec,sepDecimal,sepMilhar) { 
    if (num < 0) 
    { 
     num = -num; 
     sinal = -1; 
    } else 
     sinal = 1; 
    var resposta = ""; 
    var part = ""; 
    if (num != Math.floor(num)) // decimal values present 
    { 
     part = Math.round((num-Math.floor(num))*Math.pow(10,casasDec)).toString(); // transforms decimal part into integer (rounded) 
     while (part.length < casasDec) 
      part = '0'+part; 
     if (casasDec > 0) 
     { 
      resposta = sepDecimal+part; 
      num = Math.floor(num); 
     } else 
      num = Math.round(num); 
    } // end of decimal part 
    while (num > 0) // integer part 
    { 
     part = (num - Math.floor(num/1000)*1000).toString(); // part = three less significant digits 
     num = Math.floor(num/1000); 
     if (num > 0) 
      while (part.length < 3) // 123.023.123 if sepMilhar = '.' 
       part = '0'+part; // 023 
     resposta = part+resposta; 
     if (num > 0) 
      resposta = sepMilhar+resposta; 
    } 
    if (sinal < 0) 
     resposta = '-'+resposta; 
    return resposta; 
} 
संबंधित मुद्दे