संभव डुप्लिकेट:
How can I check if multiplying two numbers in Java will cause an overflow?जावा कोड में पूर्णांक ओवरफ़्लो को कैसे रोकें?
मान लीजिए मैं एक जावा वर्ग विधि है, जो *
और +
संचालन का उपयोग करता है।
int foo(int a, int b) { ... // some calculations with + and * }
यह सुनिश्चित करने के लिए कि foo
में कोई ओवरफ़्लो नहीं होता है?
मुझे लगता है मैं BigDecimal
उपयोग कर सकते हैं या बदलने के सभी + और की तरह "रैपर" के साथ *:
int sum(int a, int b) { int c = a + b; if (a > 0 && b > 0 && c < 0) throw new MyOverfowException(a, b) return c; } int prod(int a, int b) { int c = a * b; if (a > 0 && b > 0 && c < 0) throw new MyOverfowException(a, b) return c; }
वहाँ सुनिश्चित करें कि कोई int
अतिप्रवाह एक जावा विधि में होता है बनाने के लिए बेहतर तरीके हैं?
आप क्यों जांचते हैं कि यह शून्य से नीचे है या नहीं? एक int 0 से नीचे अच्छी तरह से जा सकता है। – 11684
सटीक होने के लिए, यह एक int की सीमा है: -2,147,483,648 से 2,147,483,647 – 11684
आप मूल्यों को क्लैंप करना चाहते हैं? –