उन तरीकों के बीच अंतर जवाडोक में दस्तावेज किया गया है। mod(m)
से:
इस विधि अलग है कि में remainder
से यह हमेशा एक गैर नकारात्मक BigInteger देता है।
इसके अलावा, इस विधि फेंकता एक ArithmeticException
दिया गया आर्ग्यूमेंट, नकारात्मक है अगर जो, अपने संपादित के अनुसार, अपने मामला नहीं है। इस प्रकार, विभाजन के लिए परीक्षण करने के लिए, mod
और remainder
के बीच कोई अंतर नहीं होगा: जब उनमें से एक 0 है तो दूसरा भी 0 होगा। आप remainder
का उपयोग कर सकते हैं क्योंकि mod
एक और गणना कर सकता है जिसकी आपको आवश्यकता नहीं है।
कार्रवाई में अंतर देखने के लिए, पर विचार करें:
public static void main(String[] args) {
BigInteger a = BigInteger.valueOf(-2);
BigInteger b = BigInteger.valueOf(3);
System.out.println(a.remainder(b)); // prints -2
System.out.println(a.mod(b)); // prints 1 == -2 (i.e. the remainder) + 3
}
यह वास्तव में आदिम int
a
और b
के लिए एक ही अंतर है और गणना के a % b
(जो remainder
तरह बर्ताव करता है) और Math.floorMod(a, b)
(जो mod
की तरह व्यवहार करता है)।
अगर आप इसे देखना चाहते हैं तो 'शेष' का उपयोग करें, यह nonzero है। 'mod' शीर्ष पर थोड़ा अतिरिक्त गणना के साथ बस' शेष 'करता है। – khelwood
एक कार्यान्वयन विस्तार - ओपनजेडीके के हुड के तहत 'mod()' कॉल 'शेष()' के कार्यान्वयन। –