को देखते हुए दो पूर्णांकों:`a^b` एक संख्यात्मक क्यों लौटाता है जब दोनों` a` और `b` पूर्णांक होते हैं?
a <- 1L
b <- 1L
जैसा कि मैंने उम्मीद होती है, बताया घटाकर, या उन्हें भी गुणा एक पूर्णांक देता है:
class(a + b)
# [1] "integer"
class(a - b)
# [1] "integer"
class(a * b)
# [1] "integer"
लेकिन उन्हें विभाजित एक अंकीय देता है:
class(a/b)
# [1] "numeric"
मुझे लगता है कि मैं समझ सकता हूं क्यों: क्योंकि पूर्णांक के अन्य संयोजन (उदाहरण के लिए a <- 2L
और b <- 3L
) एक संख्यात्मक, यह अधिक सामान्य हमेशा एक संख्यात्मक वापस करने के लिए करने के लिए चीज है।
अब घातांक पर:
class(a^b)
# [1] "numeric"
यह एक मेरे लिए एक आश्चर्य का एक सा है। क्या कोई यह समझा सकता है कि इसे इस तरह क्यों डिजाइन किया गया था?
मुझे लगता है कि ऐसा इसलिए है क्योंकि परिणाम 'इन्फ'' हो सकता है ?? 'as.integer (Inf) 'का परिणाम' एनए' होगा। पूर्व: 2 एल^10000L – Arun
जबकि मुझे चयनित उत्तर पसंद है, शायद कोई पूछ सकता है कि एक्सपोनेंटिएशन के लिए वास्तविक कोड रखने के लिए कोई और फायदा है, फिर भी एक और "कोने केस" बनाएं। खासकर अगर 'आर' कोड या 'यूनिक्स' 'पाउ' फ़ंक्शन जिसे पहले स्थान पर एक्सपोनेंट की गणना करने के लिए लॉग का उपयोग किया जा सकता है। –