2010-07-26 15 views
83

मैं जावास्क्रिप्ट के लिए नया हूं और राउंड नंबरों पर toFixed() और toPrecision() खोजा है। हालांकि, मैं यह नहीं समझ सकता कि दोनों के बीच क्या अंतर है।फिक्स्ड() और प्रेसिजन() के बीच अंतर?

number.toFixed() और number.toPrecision() के बीच क्या अंतर है?

उत्तर

104

toFixed(n) दशमलव बिंदु के बाद n लंबाई प्रदान करता है; toPrecision(x) कुल लंबाई x प्रदान करता है।

रेफरी W3Schools से कम: toFixed और toPrecision

संपादित:
मैं एक समय पहले कि w3schools वास्तव में सबसे अच्छा स्रोत नहीं है सीखा, लेकिन जब तक मैं kzh ​​के देखा मैं इस उत्तर के बारे में भूल गया था, उह , "उत्साही" टिप्पणी। मोज़िला डॉक सेंटर for toFixed() और for toPrecision() से अतिरिक्त रेफरी यहां दी गई हैं। सौभाग्य से हम सभी के लिए, एमडीसी और डब्ल्यू 3 स्कूल्स इस मामले में एक दूसरे के साथ सहमत हैं।

पूर्णता के लिए, मैं उल्लेख करना चाहिए कि toFixed()toFixed(0) के बराबर है और toPrecision() बस कोई स्वरूपण के साथ मूल संख्या दिखाता है।

+9

बाह, मैं जुलाई में इस पोस्ट 2010, और मैंने इस साल तक w3fools के बारे में नहीं सीखा। जबकि मूर्ख कुछ चीजों के बारे में सही हैं, स्कूलों पर _verything_ गलत नहीं है। यह इंगित करने के लिए धन्यवाद कि मुझे इस पोस्ट को अपडेट करने की आवश्यकता है, हालांकि; थोड़ा सा करेंगे। – Pops

+12

'toPrecision (x)' x' कुल लंबाई प्रदान नहीं करता है ", यह कई महत्वपूर्ण अंकों को प्रारूपित करता है। उदाहरण के लिए, '0.0000022.to प्रेसिजन (1)' '0.000002' वापस आ जाएगा। –

+4

मैंने अभी w3fools का दौरा किया और जो कुछ भी आश्वस्त नहीं था। मुझे कोई तर्क भी नहीं दिख रहा है। मैं देखता हूं कि दो अन्य साइटों के लिए एक विज्ञापन है। –

50

मेरा मानना ​​है कि पूर्व आपको दशमलव स्थानों की एक निश्चित संख्या देता है, जबकि बाद में आपको महत्वपूर्ण अंकों की एक निश्चित संख्या मिलती है।

Math.PI.toFixed(2); // "3.14" 
Math.PI.toPrecision(2); // "3.1" 

इसके अलावा, toPrecisionscientific notation उपज अगर वहाँ निर्दिष्ट परिशुद्धता से संख्या में अधिक पूर्णांक अंक हैं जाएगा।

(Math.PI * 10).toPrecision(2); // "31" 
(Math.PI * 100).toPrecision(2); // "3.1e+2" 

संपादित करें: ओह, और यदि आप जावास्क्रिप्ट के लिए नए हैं, मैं अत्यधिक पुस्तक "JavaScript: The Good Parts" डगलस Crockford द्वारा सिफारिश कर सकते हैं।

4

कुछ परिस्थितियों में, toPrecision() घातीय नोटेशन वापस कर देगा, जबकि toFixed() नहीं होगा।

+0

दरअसल, 'toExponential() 'एक [अलग फ़ंक्शन] है (http://www.w3schools.com/jsref/jsref_toexponential.asp)। – Pops

+3

@ लॉर्ड टोरगामस: * जावास्क्रिप्ट की मेरी प्रति के अनुसार: परिभाषा गाइड *, प्रेसिजन (सटीक) निश्चित बिंदु बिंदु नोटेशन का उपयोग करेगा यदि * सटीक * तर्क संख्या के पूर्णांक भाग के सभी अंकों को शामिल करने के लिए पर्याप्त है। अन्यथा, घातीय नोटेशन का उपयोग किया जाता है। – Robusto

8

मुझे लगता है कि यह एक उदाहरण के साथ सबसे अच्छा जवाब दिया गया है।

मान लीजिए कि आप निम्न डेटा करते हैं:

var products = [ 
    { 
    "title": "Really Nice Pen", 
    "price": 150 
    }, 
    { 
    "title": "Golf Shirt", 
    "price": 49.99 
    }, 
    { 
    "title": "My Car", 
    "price": 1234.56 
    } 
] 

आप शीर्षक और स्वरूपित मूल्य के साथ उन सभी उत्पादों का प्रदर्शित करना चाहते हैं। के toPrecision पहले का उपयोग कर कोशिश करते हैं:

document.write("The price of " + products[0].title + " is $" + products[0].price.toPrecision(5)); 

The price of Really Nice Pen is $150.00 

अच्छा लग रहा है, तो आप सोच सकते हैं इस अन्य उत्पादों के लिए रूप में अच्छी तरह से काम करेगा:

document.write("The price of " + products[1].title + " is $" + products[2].price.toPrecision(5)); 
document.write("The price of " + products[2].title + " is $" + products[2].price.toPrecision(5)); 

The price of Golf Shirt is $49.990 
The price of My Car is $1234.6 

इतना अच्छा नहीं। हम प्रत्येक उत्पाद के लिए महत्वपूर्ण अंकों की संख्या को बदलकर इसे ठीक कर सकते हैं, लेकिन यदि हम उन उत्पादों की सरणी पर पुनरावृत्ति कर रहे हैं जो मुश्किल हो सकते हैं।के toFixed बजाय उपयोग करते हैं:

document.write("The price of " + products[0].title + " is $" + products[0].price.toFixed(2)); 
document.write("The price of " + products[1].title + " is $" + products[2].price.toFixed(2)); 
document.write("The price of " + products[2].title + " is $" + products[2].price.toFixed(2)); 

The price of Really Nice Pen is $150.00 
The price of Golf Shirt is $49.99 
The price of My Car is $1234.56 

यह पैदा करता है कि तुम क्या उम्मीद। इसमें कोई अनुमान नहीं है, और कोई गोल नहीं है।

6

बस:

49.99.toFixed(5) 
// → "49.99000" 

49.99.toPrecision(5) 
// → "49.990" 
1

उदाहरण के लिए, हम चर एक विचार करते हैं, के रूप में वर एक = 123.45 a.toPrecision (6) उत्पादन 123.450 a.toFixed (6) उत्पादन होता है है 123.45000000 तरह

0

उदाहरण स्पष्ट रूप से बोलते हैं:

var A = 123.456789; 

A.toFixed(0)  // 123 
A.toFixed(1)  // 123.5 
A.toFixed(2)  // 123.46 
A.toFixed(3)  // 123.457 
A.toFixed(4)  // 123.4568 
A.toFixed(5)  // 123.45679 
A.toFixed(6)  // 123.456789 
A.toFixed(7)  // 123.4567890 
A.toFixed(8)  // 123.45678900 
A.toFixed(9)  // 123.456789000 
A.toFixed(10) // 123.4567890000 
A.toFixed(11) // 123.45678900000 

A.toPrecision()  // --- ERROR --- 
A.toPrecision(0)  // --- ERROR --- 
A.toPrecision(1)  // 1e+2 
A.toPrecision(2)  // 1.2e+2 
A.toPrecision(3)  // 123 
A.toPrecision(4)  // 123.5 
A.toPrecision(5)  // 123.46 
A.toPrecision(6)  // 123.457 
A.toPrecision(7)  // 123.4568 
A.toPrecision(8)  // 123.45679 
A.toPrecision(9)  // 123.456789 
A.toPrecision(10) // 123.4567890 
A.toPrecision(11) // 123.45678900