गो में विभाजन कैसे करें


89

मैं गो में एक साधारण विभाजन करने की कोशिश कर रहा हूं।

fmt.Println(3/10)

यह 0.3 के बजाय 0 प्रिंट करता है। यह अजीब तरह का है। क्या कोई कृपया बता सकता है कि इसके पीछे क्या कारण है? मैं गो में विभिन्न अंकगणितीय ऑपरेशन करना चाहता हूं।

धन्यवाद

जवाबों:


93

अभिव्यक्ति 3 / 10एक अनछुई स्थिर अभिव्यक्ति है। विनिर्देश लगातार अभिव्यक्ति के बारे में यह कहता है

यदि बाइनरी ऑपरेशन के ऑपरेशंस अलग-अलग प्रकार के अनछुए स्थिरांक हैं, तो ऑपरेशन और, गैर-बूलियन ऑपरेशन के लिए, परिणाम उस तरह का उपयोग करता है जो इस सूची में बाद में प्रकट होता है: पूर्णांक, रूण, फ्लोटिंग-पॉइंट, कॉम्प्लेक्स।

क्योंकि 3और 10अनपेड पूर्णांक स्थिरांक हैं, अभिव्यक्ति का मूल्य एक अनपेड पूर्णांक ( 0इस मामले में) है।

ऑपरेंड में से एक फ्लोटिंग-पॉइंट स्थिर के परिणाम के लिए एक फ़्लोटिंग-पॉइंट स्थिरांक होना चाहिए। निम्न अभिव्यक्तियाँ अप्राप्त फ़्लोटिंग-पॉइंट स्थिरांक का मूल्यांकन करती हैं 0.3:

3.0 / 10.0
3.0 / 10
3 / 10.0

टाइप किए गए स्थिरांक का उपयोग करना भी संभव है। निम्न अभिव्यक्तियाँ float64स्थिरांक का मूल्यांकन करती हैं 0.3:

float64(3) / float64(10)
float64(3) / 10
3 / float64(10)

ऊपर दिए गए किसी भी भाव को प्रिंट करना प्रिंट होगा 0.3। उदाहरण के लिए, fmt.Println(3.0 / 10)प्रिंट 0.3


मैं यह मानकर चल रहा हूं कि यह प्रतिशत है। उदाहरण के लिए, यदि उपयोगकर्ता 30 देता है, तो मुझे 30/100 * somenumber परफॉर्म करना होगा। इनपुट हमेशा एक पूर्णांक होगा। इस परिदृश्य में विभाजन कैसे करें?
वृषांक दोशी

पूर्णांक को फ्लोटिंग पॉइंट नंबरों में बदलें
सेरेस लिमोन

मैंने fmt.Println (float64 (3/10)) की कोशिश की, लेकिन यह मुझे 0 देता है
वृषांक दोशी

8
@ वीरशंकदोषी: fmt.Println(float64(3) / float64(10))देता है 0.3
पेट्रोस

22

जैसा कि @Cerise और युक्ति के अनुसार उल्लेख किया गया है

अंकगणित ऑपरेटर संख्यात्मक मानों पर लागू होते हैं और पहले ऑपरेंड के समान प्रकार का परिणाम देते हैं

इस मामले में केवल पहले ऑपरेंड को एक अस्थायी बिंदु होने की आवश्यकता है।

fmt.Println(3.0/10)
fmt.Println(float64(3)/10)
// 0.3 0.3

उदाहरण


हाँ! सिर्फ पहला ऑपरेंड
SMMousavi

हमेशा सफल नहीं होने की स्थिति में, "10" को int के रूप में पाया जाता है, तो यह निम्नलिखित त्रुटि को बढ़ाएगा: अमान्य ऑपरेशन: (बेमेल प्रकार फ्लोट64 और int)
Feras
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.