मैं यह समझने की कोशिश कर रहा हूं कि मॉड्यूलो ऑपरेशन अपेक्षित रूप से काम क्यों नहीं करता है:

मुझे एक IBAN को मान्य करने की आवश्यकता है, और एल्गोरिथ्म में एक मॉड्यूल करना शामिल है।

विकिपीडिया के अनुसार: यहां लिंक विवरण दर्ज करें

३२१४२८२९१२३४५६९८७६५४३२१६१८२ मॉड ९७ = १

मेरे विंडोज कैलकुलेटर के अनुसार :: ३२१४२८२९१२३४५६९८७६५४३२१६११८२ मॉड ९७ = १

लेकिन जब मैं इसे जेएस में करता हूं तो मुझे 65 मिलते हैं:

var result = 3214282912345698765432161182 % 97;
console.log(result);
// result is 65

मुझे JS में 65 और 1 क्यों नहीं मिल रहा है?

4
bretondev 30 मार्च 2018, 13:56

3 जवाब

यह लाइब्रेरी आपकी समस्या का समाधान कर सकती है या npm के माध्यम से इंस्टॉल कर सकती है npm install big-integer

एक स्निपेट कोड नोड में चलता है

var bigInt = require("big-integer");
var largeNumber = bigInt("3214282912345698765432161182");
console.log(largeNumber.divmod(97).remainder.value)

आउटपुट 1 . है

0
Kashyap 30 मार्च 2018, 11:23

शुद्धता खोए बिना JavaScript का उच्चतम पूर्णांक मान है

+/- 9007199254740991

वे संख्याएँ जो परिमाण में 2^53 से कम हैं, संख्या प्रकार में प्रदर्शित की जा सकती हैं।

आप ब्राउज़र कंसोल में Number.MAX_SAFE_INTEGER चलाकर इसकी जांच कर सकते हैं।

इससे बड़े पूर्णांक सीधे संग्रहीत होने पर अपनी सटीकता खो देंगे।

जावास्क्रिप्ट में BigIntegers को कैसे संभालना है, इसके लिए यह ब्लॉगपोस्ट देखें।

http://2ality.com/2012/07/large-integers.html

0
Subbi reddy dwarampudi 30 मार्च 2018, 11:09

आपकी संख्या (2^53)-1 से अधिक है इसलिए इसे सही ढंग से प्रदर्शित नहीं किया जाएगा।

आप फ़ंक्शन Number#isSafeInteger का उपयोग यह जांचने के लिए कर सकते हैं कि क्या इस नंबर का उपयोग करना सुरक्षित है

const isSafe = Number.isSafeInteger(3214282912345698765432161182);

console.log(isSafe);
5
Weedoze 30 मार्च 2018, 11:03