(टिप्पणी: के बाद से ओपी कभी नहीं स्पष्ट रूप से की दिशा में 0 या -Infinity गोलाई निर्दिष्ट this other question के रूप में ही नहीं)जावा: मैं पूर्णांक विभाजन कैसे कर सकता हूं जो कि 0 की बजाय अनंतता की ओर है?
JLS 15.17.2 का कहना है कि शून्य की ओर पूर्णांक विभाजन दौर। अगर मुझे सकारात्मक divisors के लिए floor()
जैसा व्यवहार चाहिए (मुझे नकारात्मक divisors के व्यवहार के बारे में परवाह नहीं है), यह प्राप्त करने का सबसे आसान तरीका क्या है जो सभी इनपुट के लिए संख्यात्मक रूप से सही है?
int ifloor(int n, int d)
{
/* returns q such that n = d*q + r where 0 <= r < d
* for all integer n, d where d > 0
*
* d = 0 should have the same behavior as `n/d`
*
* nice-to-have behaviors for d < 0:
* option (a). same as above:
* returns q such that n = d*q + r where 0 <= r < -d
* option (b). rounds towards +infinity:
* returns q such that n = d*q + r where d < r <= 0
*/
}
long lfloor(long n, long d)
{
/* same behavior as ifloor, except for long integers */
}
(अद्यतन: मैं दोनों के लिए int
और long
अंकगणित एक समाधान करना चाहते हैं।)
यह * एक डुप्लिकेट होना है, लेकिन मुझे यह नहीं मिल रहा है, और यदि यह डुप्लिकेट नहीं है तो मैं पूरी तरह से हैरान हूं कि यह स्टैक ओवरफ्लो के 3+ वर्षों के बाद अभी तक नहीं आया है। –
शेष के लिए 'd <0' स्थितियों में, मुझे लगता है कि आपके पास कुछ उलटा संकेत हैं। ऐसा लगता है कि आप विकल्प (ए) और 'd
सही: धन्यवाद, मेरा मतलब divisor का सकारात्मक संस्करण था। (और यह + अनंतता की ओर घूम रहा होना चाहिए) –