मुझे पता लगाने में समस्याएं आ रही हैं कि दो संख्याओं का योग/गुणा एक लंबे पूर्णांक के अधिकतम मूल्य से अधिक है या नहीं।
उदाहरण कोड:जावा नंबर लंबा है। Max_value - कैसे पता लगाने के लिए?
long a = 2 * Long.MAX_VALUE;
System.out.println("long.max * smth > long.max... or is it? a=" + a);
यह मैं -2
देता है, जबकि मैं इसे फेंक की उम्मीद करेंगे एक NumberFormatException
...
वहाँ इस काम बनाने का एक आसान तरीका है? क्योंकि मेरे पास कुछ कोड है जो लूप में नेस्टेड आईएफ ब्लॉक या जोड़ों में गुणा करता है और मैं प्रत्येक IF या लूप के अंदर और अधिक IF जोड़ने से नफरत करता हूं।
संपादित करें: इस तरह से बहुत है https://stackoverflow.com/a/9057367/540394
मैं नहीं चाहता कि मुक्केबाजी/unboxing क्या करना चाहते हैं के रूप में यह unnecassary भूमि के ऊपर जोड़ता है, और: ओह ठीक है, ऐसा लगता है कि एक और सवाल से इस उत्तर के लिए सबसे उपयुक्त है कि मैं क्या जरूरत है छोटा, जो मेरे लिए एक बड़ा प्लस है। मैं इन चेकों को करने के लिए केवल दो छोटे कार्यों को लिखूंगा और न्यूनतम या अधिकतम लंबा लौटा दूंगा।
EDIT2:
/**
* @param a : one of the two numbers added/multiplied
* @param b : the other of the two numbers
* @param c : the result of the addition/multiplication
* @return the minimum or maximum value of a long integer if addition/multiplication of a and b is less than Long.MIN_VALUE or more than Long.MAX_VALUE
*/
public static long limitLong(long a, long b, long c)
{
return (((a > 0) && (b > 0) && (c <= 0))
? Long.MAX_VALUE
: (((a < 0) && (b < 0) && (c >= 0)) ? Long.MIN_VALUE : c));
}
मुझे बताओ अगर आपको लगता है यह गलत है: यहाँ जवाब मैं ऊपर से जुड़ा हुआ के अनुसार अपने न्यूनतम/अधिकतम मूल्य के लिए एक लंबे सीमित करने के लिए सुविधा नहीं होती।
+1। कुछ पुस्तकालय होना चाहिए जो पूर्णांक अतिप्रवाह पहचान के लिए अनुमति देता है। – Thilo
या विशेष ब्लॉक (आखिरकार कुछ ऐसा?) जो डेवलपर्स को सभी गणित कोड के लिए त्रुटि-पर-ओवरफ्लो व्यवहार सक्षम करने में सहायता कर सकता है जो मुझे अंदर आता है। मेरा मानना है कि सी # में एक है। संपादित करें: इसे मिला, [सी # में चेक और अनचेक ब्लॉक] (http://msdn.microsoft.com/en-us/library/a569z7k8.aspx)। –
खैर, सी # अतिप्रवाह पर त्रुटियों को फेंकने लगता है (जो मैं चुप्पी और गलत परिणामों पर बहुत अधिक पसंद करता हूं जो मुझे समझ में नहीं आता है) ... – jurchiks