2011-04-15 15 views
5

सी में विपरीत, जावा में x/y और x%y नकारात्मक ऑपरेटरों के लिए भी अच्छी तरह से परिभाषित किया गया है। हैरानी की बात यह है कि इसे शून्य की ओर घूमते हुए परिभाषित किया गया है, न कि नीचे घूमते हुए (यानि, नकारात्मक अनंतता की ओर)। क्या किसी ने इस परिभाषा का कोई फायदा उठाया है?पूर्णांक div और शून्य की ओर मॉड राउंड क्यों करें?

ज्यादातर मामलों में मुझे बस परवाह नहीं है, लेकिन कभी-कभी मुझे इसके आसपास काम करना पड़ता था, उदाहरण के लिए, मॉड्यूल array.length का उपयोग कर इंडेक्स की गणना करते समय।

यह कोई रान नहीं है, अगर इस परिभाषा के लिए उपयोग किया जाता है तो मुझे वास्तव में दिलचस्पी है।

+0

है कि यह कैसे हार्डवेयर में किया है। एक छोटी सी चीज, आपको सरणी रखने की कोशिश करें। लम्बाई 2 की शक्ति और उपयोग करें और (array.length-1) – bestsss

उत्तर

6

यदि आप शून्य की ओर गोल कर सकते हैं तो एक विभाजन दिनचर्या को कार्यान्वित करना आसान है। अक्सर, एक नकारात्मक शामिल एक विभाजन साइन-फ्लिप होता है, और फिर विभाजन सकारात्मक समकक्ष पर किया जाता है, और फिर जवाब फिर से फ़्लिप हो जाता है। तो प्रभाव स्वाभाविक रूप से शून्य की ओर गोल होने जा रहा है।

+0

यह सच है, हालांकि, ऐसी परिभाषा त्रुटियों का एक आम स्रोत है और ऐसा करने से यह महंगा नहीं होगा। मुझे अभी भी आश्चर्य है कि क्या किसी ने इस (अजीब लेकिन मानक) परिभाषा का कोई फायदा उठाया है? – maaartinus

+1

@मार्टिनस: पहली बात जो दिमाग में आती है वह यह है कि राउंड-ओर-शून्य निष्पक्ष मात्रात्मक त्रुटि प्रदान करेगा (माना जाता है कि डेटा को समान रूप से + ve और -ve के बीच वितरित किया जाता है), जबकि राउंड-ओर-माइनस-इन्फिनिटी का परिणाम पूर्वाग्रह होगा । –

1

यहाँ एक उदाहरण है, जहां यह उपयोगी है, हालांकि थोड़ा है: (। कोई maxPage = 0 जब rows.length = 0 के लिए विशेष मामले की जरूरत, ROWS_PER_PAGE > 1 संभालने)

maxPage = (rows.length - 1)/ROWS_PER_PAGE 

संबंधित मुद्दे