अल्पविराम के बाद संख्याओं को 2 अंकों तक पहुंचाना


83

मैं यह कैसे करूं पता नहीं है? मैं अल्पविराम संख्याएँ जोड़ रहा हूँ, परिणाम हमेशा अल्पविराम के बाद कई अंको के साथ एक संख्या है। किसी को?


1
कुछ स्थानों के लिए, अल्पविराम को अवधि के साथ बदल दिया जाता है।
DOK

@ मैट - यह jParseFloat प्लगइन का हिस्सा है, यह 1.5 में jQuery कोर का हिस्सा होगा!
निक Craver

जवाबों:


107

संपादित करें 2 :

का प्रयोग करें Numberवस्तु की toFixedइस तरह विधि:

var num = Number(0.005) // The Number() only visualizes the type and is not needed
var roundedString = num.toFixed(2);
var rounded = Number(roudedString); // toFixed() returns a string (often suitable for printing already)

यह 42.0054321 से 42.01 तक गोल है

यह 0.005 से 0.01 तक गोल है

यह -0.005 से -0.01 तक है (इसलिए .5 बॉर्डर पर पूर्ण मान बढ़ता है)

jsFiddle उदाहरण


1
@ सीन - कॉमा या दशमलव? आपका प्रश्न और उदाहरण असहमत हैं।
निक Craver

11
यह उदाहरण काम नहीं करता है यदि आप वास्तव में एक संख्या को गोल करना चाहते हैं, तो 0.007 को दो दशमलव स्थानों पर कहें। इसका परिणाम है: Math.round (0.007) -> 0.000 और फिर toFixed (2) -> 0.00। वास्तविक गोलाई प्रक्रिया को 0.01 प्रस्तुत करना चाहिए।
आंद्रेई

9
downvote: उत्तर गलत है क्योंकि Math.round () संख्या को गोल करता है, जिससे सभी दशमलव हटा दिए जाते हैं। सभी toFixed (2) तब दो अनुगामी शून्य जोड़ देता है। बस number.toFixed (2) करेंगे।
हैमरएनएल

1
कुछ किया जाना चाहिए क्योंकि यह उत्तर गलत है और अन्य लोग स्वीकृत उत्तर का उपयोग करके आँख बंद करके टिप्पणियों को नहीं पढ़ सकते हैं।
पेड्रो मोरिरा

1
−1: आपके उदाहरण में 3.1415बन जाता 3.00है।

102

अद्यतन: ध्यान रखें, जिस समय उत्तर 2010 में शुरू में लिखा गया था, उस समय bellow फ़ंक्शन को toFixed () थोड़ा अलग काम किया गया था। लगता है () अब कुछ राउंडिंग कर रहा है, लेकिन सख्ती से गणितीय तरीके से नहीं। इसलिए इससे सावधान रहें। अपने परीक्षण करें ... वर्णित विधि अच्छी तरह से राउंडिंग करेगी, जैसा कि गणितज्ञ उम्मीद करेंगे।

  • toFixed()- विधि एक संख्या को एक स्ट्रिंग में परिवर्तित करती है, एक निर्दिष्ट संख्या में दशमलव रखती है। यह वास्तव में एक संख्या को गोल नहीं करता है, यह संख्या को काट देता है।
  • Math.round(n)- निकटतम पूर्णांक के लिए एक संख्या को गोल करता है। इस प्रकार मोड़:

0.5 -> 1; 0.05 -> 0

इसलिए यदि आप राउंड करना चाहते हैं, तो 0.55555 नंबर कहें, केवल दूसरे दशमलव स्थान पर; आप निम्नलिखित कर सकते हैं (यह चरण-दर-चरण अवधारणा है):

  • 0.55555 * 100 = 55.555
  • Math.Round(55.555) -> 56.000
  • 56.000 / 100 = 0.56000
  • (0.56000).toFixed(2) -> 0.56

और यह कोड है:

(Math.round(number * 100)/100).toFixed(2);

मैं उसी विधि का उपयोग करता हूं। महान काम करता है
इंडियाना कार्निक जूल

उदाहरण के लिए समस्याओं का कारण बनता है जब आप पहले से ही कोमा के बाद वांछित अंकों के साथ तैरते हैं जैसे> (Math.round (123.12124 * 100) / 100) .toFixed (4); ===> 123.1200
एलेंडॉर्फ

1
आप इस तरह गोल गणित को बदलना भूल गए: Math.round (123.12124 * 10000) / 10000) .toFixed (4)। यह है यदि आप 4 वें दशमलव स्थान पर चक्कर लगाना चाहते हैं।
आंद्रेई

त्रुटि: toFixed () संख्या को राउंड करता है , इसलिए यह छोटा नहीं है। देखें developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
MikeB

1.005 के लिए पास नहीं करता है
लेन जोसफ

55

यह मेरे लिए काम किया:

var new_number = float.toFixed(2);

उदाहरण:

var my_float = 0.6666

my_float.toFixed(3) # => 0.667

मुझे लगता है कि इसके साथ मुद्दा यह है कि यह संख्या को "गोल" नहीं करता है, इसलिए इसके बजाय 0.6666.toFixed(3)हो जाता 0.666है 0.667। @Andrei को सही तरीके से गोलाई के लिए सही समाधान लगता है।
जोशुआ पिन्टर

1
हा! कोई बात नहीं। मैंने अभी इसका परीक्षण किया और toFixed()पूरी तरह से काम करता है 0.6666.toFixed(3) # => 0.667:। मैं इसे आपके उत्तर में जोड़ दूंगा।
जोशुआ पिंटर

3
सबसे छोटा और सबसे अच्छा। यह स्वीकृत उत्तर होना चाहिए।

12

पिछले उत्तर आउटपुट को फिर से संख्या के रूप में लिखना भूल गए। ऐसा करने के कई तरीके हैं, जो आपके स्वाद पर निर्भर करता है।

+my_float.toFixed(2)

Number(my_float.toFixed(2))

parseFloat(my_float.toFixed(2))

1
मेरे हिसाब से यह सबसे अच्छा जवाब है। यह सरल, संक्षिप्त है और इसका परिणाम
करमा

मुझे "+" संकेतन पसंद है, बहुत ही सुरुचिपूर्ण
जिबी ओक्ट

5

यह वास्तव में सीपीयू के अनुकूल नहीं है, लेकिन:

Math.round(number*100)/100

उम्मीद के मुताबिक काम करता है।


2

यद्यपि हमारे पास बहुत सारे उपयोगी सुझावों के साथ यहां कई उत्तर हैं, लेकिन उनमें से प्रत्येक अभी भी कुछ चरणों को याद करता है
तो यहाँ एक छोटे से समारोह में लिपटे पूर्ण समाधान है:

function roundToTwoDigitsAfterComma(floatNumber) {
    return parseFloat((Math.round(floatNumber * 100) / 100).toFixed(2));
}

बस अगर आप रुचि रखते हैं कि यह कैसे काम करता है:

  1. 100 के साथ एकाधिक और फिर अल्पविराम के बाद 2 अंकों की सटीकता रखने के लिए गोल करें
  2. 100 में वापस विभाजित करें toFixed(2)और कॉमा के बाद 2 अंक रखने के लिए उपयोग करें और अन्य अप्रयुक्त भाग को फेंक दें
  3. बदले स्ट्रिंग के parseFloat()रूप में फ़ंक्शन का उपयोग करके इसे वापस फ्लोट में कनवर्ट करेंtoFixed(2)

नोट: यदि आप मौद्रिक मानों के साथ काम करने के कारण अल्पविराम के बाद अंतिम 2 अंक रखते हैं, और वित्तीय गणना करते समय ध्यान रखें कि यह एक अच्छा विचार नहीं है और आप इसके बजाय पूर्णांक मानों का बेहतर उपयोग करेंगे।


1

नीचे दिए गए कोड का उपयोग करें।

alert(+(Math.round(number + "e+2")  + "e-2"));

2
यह उत्तर मूल रूप से इस 7 साल पुराने प्रश्न के अन्य उत्तरों के समान ही करता है, लेकिन बहुत अस्पष्ट तरीके से, जावास्क्रिप्ट के निहित प्रकार रूपांतरणों का शोषण करता है। इस कोड के किन गुणों ने आपको यहां पोस्ट करने के लिए राजी किया?
u354356007

इस उत्तर की गुणवत्ता यह है कि इससे मुझे कुछ नया सीखने को मिला जो मुझे JS; ;-) के बारे में नहीं पता था;
डेब्लाटन जीन-फिलिप

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.