जावास्क्रिप्ट 2 दशमलव स्थानों पर एक फ्लोट प्रदर्शित करता है


315

मैं 2 दशमलव स्थानों पर एक संख्या प्रदर्शित करना चाहता था।

मैंने सोचा कि मैं toPrecision(2)जावास्क्रिप्ट में उपयोग कर सकता हूं ।

हालांकि, अगर संख्या है 0.05, तो मुझे मिलता है 0.0500। मैं बल्कि यह वही रहना चाहते हैं।

इसे JSbin पर देखें ।

इसे करने का बेहतरीन तरीका क्या है?

मैं कुछ समाधानों को कोड करने के बारे में सोच सकता हूं, लेकिन मैं कल्पना करूंगा (मुझे उम्मीद है) कुछ इस तरह से बनाया गया है?

जवाबों:


559
float_num.toFixed(2);

नोट:toFixed() निर्दिष्ट लंबाई को पूरा करने के लिए यदि आवश्यक हो तो शून्य के साथ गोल या पैड होगा।


61
लेकिन यह स्ट्रिंग लौटाता है, फ्लोट नहीं!
अनवर

38
प्रश्न लेखक इसे "प्रदर्शित" करना चाहता है, इसलिए एक तार एकदम सही है
क्रिस्टोफ़ मैरिस

7
और आप हमेशा केवल दो डेसीमल रखते हुए स्ट्रिंग को वापस फ्लोट में परिवर्तित करने के लिए parseFloat (float_num.toFixed (2)) का उपयोग कर सकते हैं।
हैन्कॉर्ड्स

3
@anwar आप मज़बूती से फ़्लोट राउंड नहीं कर सकते (यकीनन आप फ़्लोट राउंड फ़ुल कर सकते हैं) - आपको 0.0500 या 0.0500000000001 जैसा कुछ मिलेगा। देखें floating-point-gui.de
जे एम सी

2
@ हैंकॉर्डर्स आपने जो कहा वह सच नहीं है। अगर मेरे पास '43 .01 'है और मुझे पार्सफ्लोट है तो मुझे 43.01 बॉट मिलेंगे, अगर मेरे पास' .10 'है तो मुझे 43.1 मिलेंगे: डी जो मुझे चाहिए नहीं।
लूसियन टारना

50

आप इसे toFixedफंक्शन के साथ कर सकते हैं , लेकिन यह IE में छोटी गाड़ी है । यदि आप एक विश्वसनीय समाधान चाहते हैं, तो यहां मेरे उत्तर को देखें ।


26
IE के अनुकूल होने के बजाय तकनीक विकसित की जानी चाहिए ... (नोड float_num.toFixed(2);
जेडएस


14

पता नहीं कैसे मुझे यह सवाल मिला, लेकिन भले ही यह पूछे जाने के बाद से कई साल हो गए हैं, मैं एक त्वरित और सरल विधि जोड़ना चाहूंगा जिसका मैंने पालन किया है और इसने मुझे कभी निराश नहीं किया:

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );

1
parseFloat()वहाँ क्यों ? इसका उपयोग केवल तभी किया जाना चाहिए जब संख्या एक स्ट्रिंग से आ रही हो।
एलेक्स

3
कुछ अवसरों में जब मुझे एक तत्व से कुछ "डेटा-" विशेषता मूल्य प्राप्त होता है, अगर मैं केवल उपयोग करता हूं तो यह त्रुटि पैदा करता है। parseFloat इसे ठीक करता है।
पैनोस

2
हाँ, यह है कि मैं ऊपर का मतलब अगर यह एक स्ट्रिंग से आया था । लेकिन हमेशा इसका इस्तेमाल करना बुरी सलाह है।
एलेक्स


8

number.parseFloat(2) काम करता है लेकिन यह एक स्ट्रिंग लौटाता है।

यदि आप इसे एक संख्या प्रकार के रूप में संरक्षित करना चाहते हैं जिसका आप उपयोग कर सकते हैं:

Math.round(number * 100) / 100


4

आप मिश्रण Number()और कोशिश कर सकते हैं toFixed()

अपने लक्ष्य संख्या को X अंकों के साथ एक अच्छी स्ट्रिंग में परिवर्तित करें और फिर फ़ॉर्मेट किए गए स्ट्रिंग को संख्या में परिवर्तित करें।

Number( (myVar).toFixed(2) )


नीचे उदाहरण देखें:

var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
  $('#message').text( myNumber * multiplier );
});

$('#actionButton2').on('click', function() {
  $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="actionButton">Weird numbers</button>
<button id="actionButton2">Nice numbers</button>

<div id="message"></div>


अच्छा संदर्भ के लिए धन्यवाद।
अरमान एच

1

toFixed()विधि एक संख्या निर्धारित बिंदु अंकन का उपयोग स्वरूपों।

और यहाँ वाक्यविन्यास है

numObj.toFixed([digits])

अंक तर्क वैकल्पिक है और डिफ़ॉल्ट रूप से 0. है और वापसी प्रकार स्ट्रिंग संख्या नहीं है। लेकिन आप इसे नंबर का उपयोग करके परिवर्तित कर सकते हैं

numObj.toFixed([digits]) * 1

यह अपवादों को भी फेंक सकता है TypeError, जैसे ,RangeError

यहां ब्राउज़र में पूर्ण विवरण और संगतता है।



-1

मैंने यह फंक्शन किया है। यह ठीक काम करता है लेकिन स्ट्रिंग लौटाता है।

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.