मेरे पास एक विभाजन के परिणाम हैं और मैं परिणामी संख्या के दशमलव भाग को छोड़ना चाहता हूं।
मैं यह कैसे कर सकता हूँ?
मेरे पास एक विभाजन के परिणाम हैं और मैं परिणामी संख्या के दशमलव भाग को छोड़ना चाहता हूं।
मैं यह कैसे कर सकता हूँ?
जवाबों:
आप उपयोग कर सकते हैं ...
Math.trunc() (छोटा अंश आंशिक, नीचे भी देखें)Math.floor() (नीचे घूमो)Math.ceil() (बढ़ाना) Math.round() (निकटतम पूर्णांक तक गोल)... इस बात पर निर्भर करता है कि आप दशमलव को कैसे निकालना चाहते हैं।
Math.trunc()अभी तक (अर्थात् IE) सभी प्लेटफार्मों पर समर्थित नहीं है, लेकिन आप इस बीच आसानी से एक पॉलीफ़िल का उपयोग कर सकते हैं ।
उत्कृष्ट प्लेटफ़ॉर्म समर्थन के साथ आंशिक भाग को काटकर अलग करने का एक अन्य तरीका बिटवाइज़ ऑपरेटर (.eg |0) का उपयोग करना है। एक नंबर पर एक बिटवाइज़ ऑपरेटर का उपयोग करने का साइड-इफेक्ट यह है कि यह अपने ऑपरेंड को एक हस्ताक्षरित 32 बिट पूर्णांक के रूप में मानेगा, इसलिए आंशिक घटक को हटा देगा। ध्यान रखें कि यह 32 बिट्स से बड़ी संख्याओं को भी मापेगा।
आप फ़्लोटिंग अंक अंकगणित के साथ दशमलव गोलाई की अशुद्धि के बारे में भी बात कर सकते हैं।
आवश्यक पढ़ना - फ्लोटिंग-पॉइंट अंकगणित के बारे में हर कंप्यूटर वैज्ञानिक को क्या जानना चाहिए ।
> (2.305*100)|0 > 230 > (2.3*100)|0 > 229
2.3*100जावास्क्रिप्ट का परिणाम है 229.99999999999997, तो ऐसा लगता है कि बिटवाइन ऑपरेटर आपके उदाहरण में अपना काम सही ढंग से कर रहा है।
|0कि 64 बिट पूर्णांक का उपयोग करता है?
आप दशमलव को कम करने के लिए बिटवाइज़ ऑपरेटरों का भी उपयोग कर सकते हैं।
जैसे
var x = 9 / 2;
console.log(x); // 4.5
x = ~~x;
console.log(x); // 4
x = -3.7
console.log(~~x) // -3
console.log(x | 0) // -3
console.log(x << 0) // -3
मैथ फ़ंक्शंस की तुलना में बिटवाइज़ ऑपरेशन काफी अधिक कुशल हैं। डबल नॉटवाइज़ ऑपरेटर भी एक नगण्य राशि से बिट x | 0- x << 0बिट संचालन को थोड़ा बेहतर करने लगता है ।
// 952 milliseconds
for (var i = 0; i < 1000000; i++) {
(i * 0.5) | 0;
}
// 1150 milliseconds
for (var i = 0; i < 1000000; i++) {
(i * 0.5) << 0;
}
// 1284 milliseconds
for (var i = 0; i < 1000000; i++) {
Math.trunc(i * 0.5);
}
// 939 milliseconds
for (var i = 0; i < 1000000; i++) {
~~(i * 0.5);
}
यह भी ध्यान देने योग्य है कि बिटवाइज़ नहीं ऑपरेटर अंकगणितीय कार्यों पर पूर्वता लेता है, इसलिए आपको इच्छित परिणाम प्राप्त करने के लिए कोष्ठक के साथ गणनाओं को घेरना पड़ सकता है:
x = -3.7
console.log(~~x * 2) // -6
console.log(x * 2 | 0) // -7
console.log(x * 2 << 0) // -7
console.log(~~(x * 2)) // -7
console.log(x * 2 | 0) // -7
console.log(x * 2 << 0) // -7
डबल बिटवाइज़ नहीं ऑपरेटर के बारे में अधिक जानकारी डबल बिटवाइज़ नॉट पर मिल सकती है (~~)
आप भी कर सकते हैं
parseInt(a/b)
parseIntबड़ी संख्या के लिए मज़बूती से काम नहीं करेगा, क्योंकि यह पहली बार अपने तर्क को एक स्ट्रिंग में परिवर्तित करके काम करता है, और बड़ी संख्या के लिए परिणाम घातीय संकेतन का उपयोग करेगा। उदाहरण के लिए: var n = 22222222222222222222222; parseInt(n);लौटेगा 2, क्योंकि n.toString()रिटर्न 2.2222222222222223e+22।
parseInt()अपने उद्देश्य के लिए भी उपयोग नहीं कर रहा है, जो कि एक स्ट्रिंग में एक संख्या लेना है और वापस लौटना है Number।
निम्नलिखित कोड का उपयोग करके आप दशमलव बिंदु (यहां 2 अंक) के बाद अंकों की एक निश्चित संख्या भी दिखा सकते हैं:
var num = (15.46974).toFixed(2)
console.log(num) // 15.47
console.log(typeof num) // string
Math.round()फ़ंक्शन का उपयोग करें ।
Math.round(65.98) // will return 66
Math.round(65.28) // will return 65
$.round = Math.round;)
का उपयोग करें Math.round()।
(एलेक्स का जवाब बेहतर है; मैंने एक धारणा बनाई :)
ES2015 के साथ, Math.trunc () उपलब्ध है।
Math.trunc(2.3) // 2
Math.trunc(-2.3) // -2
Math.trunc(22222222222222222222222.3) // 2.2222222222222223e+22
Math.trunc("2.3") // 2
Math.trunc("two") // NaN
Math.trunc(NaN) // NaN
यह IE11 या उससे नीचे समर्थित नहीं है, लेकिन एज और हर दूसरे आधुनिक ब्राउज़र में काम करता है।
Math.trunc(value * Math.pow(10,x)) / Math.pow(10,x)होगा कि काम करेगा?
value = 2.3और x = 2वापस लौटेंगे 2.29। मेरे पास बेहतर सुझाव नहीं है।
फेफिच्ड गोल की तरह व्यवहार करेगा।
एक मंजिल की तरह व्यवहार के लिए% का उपयोग करें:
var num = 3.834234;
var floored_num = num - (num % 1); // floored_num will be 3
यहाँ उपरोक्त पदों की मदद से विस्तृत व्याख्या में संक्षिप्त है:
1. Math.trunc (): इसका उपयोग उन अंकों को हटाने के लिए किया जाता है जिनका डॉट द्वारा अनुसरण किया जाता है। यह अंतर्निहित रूप से परिवर्तित होता है। लेकिन, IE में समर्थित नहीं है।
उदाहरण:
मैथ ट्रंक (10.5) // 10
मैथ ट्रंक (-10.5) // -10
अन्य वैकल्पिक तरीका: बिटवाइजर का उपयोग नहीं ऑपरेटर:
उदाहरण:
x = 5.5
~~ x // 5
2. Math.floor (): इसका उपयोग न्यूनतम पूर्णांक मान को सकारात्मक देने के लिए किया जाता है। यह सभी ब्राउज़रों में समर्थित है।
उदाहरण:
मैथ.फ्लोर (10.5) // 10
मैथ.फ्लोर (-10.5) // -11
3. Math.ceil (): इसका उपयोग उच्चतम पूर्णांक मान को संभव बनाने के लिए किया जाता है। यह सभी ब्राउज़रों में समर्थित है।
उदाहरण:
मैथ.सिल (10.5) // 11
मैथ.सिल (-10.5) // -10
4. Math.round (): यह निकटतम पूर्णांक के लिए गोल है। यह सभी ब्राउज़रों में समर्थित है।
उदाहरण:
गणित। घेर (10.5) // 11
गणित। आसपास (-10.5) // -10
गणित। घेर (10.49) // 10
Math.round (-10.51) // -11
उदाहरण के लिए:
var x = 9.656;
x.toFixed(0); // returns 10
x.toFixed(2); // returns 9.66
x.toFixed(4); // returns 9.6560
x.toFixed(6); // returns 9.656000
या
parseInt("10"); // returns 10
parseInt("10.33"); // returns 10
parseInt("10 20 30"); // returns 10
parseInt("10 years"); // returns 10
parseInt("years 10"); // returns NaN
यह उन लोगों के लिए है जो उपयोगकर्ताओं को दशमलव संख्या में प्रवेश करने से रोकना चाहते हैं
<input id="myInput" onkeyup="doSomething()" type="number" />
<script>
function doSomething() {
var intNum = $('#myInput').val();
if (!Number.isInteger(intNum)) {
intNum = Math.round(intNum);
}
console.log(intNum);
}
</script>
आप पूर्ण दशमलव भाग को निकालने के लिए .toFixed (0) का उपयोग कर सकते हैं या उन तर्कों में संख्या प्रदान कर सकते हैं, जिन्हें आप दशमलव को छोटा करना चाहते हैं।
नोट: toFixed संख्या को स्ट्रिंग में बदल देगा।
Math.floor()होगी । इस प्रकार , जबकि । ( जैसा कि @FloydPink द्वारा बताया गया है ) सकारात्मक और नकारात्मक दोनों संख्याओं के लिए उम्मीद के मुताबिक दशमलव भाग को छोड़ देगा ।Math.floor(-1.2) -> -2Math.floor(1.2) -> 1parseInt(-1.2) -> -1