को असाइन किए जाने पर गोलाकार हो जाता है, मैं सी में pow
फ़ंक्शन का उपयोग कर रहा हूं और एक पूर्णांक प्रकार में वापसी मान संग्रहीत कर रहा हूं।पावर() के वापसी मूल्य को पूर्णांक
for (i = 0; i < 5; i++){
val = (int)pow(5, i);
printf("%d, ", val);
}
यहाँ i
, और val
पूर्णांक हैं और आउटपुट 1, 5, 24, 124, 624
है: नीचे कोड स्निपेट देखें। मेरा मानना है कि ऐसा इसलिए है क्योंकि एक फ्लोट 25 को 24.9 99 99 के रूप में माना जाता है ... जो एक पूर्णांक के लिए असाइनमेंट पर 24 तक गोल हो जाता है।
अगर मुझे अभी भी एक int में वापसी मूल्य को स्टोर करने की आवश्यकता है तो मैं इसे कैसे पार कर सकता हूं?
'float' 25' 24.9 ... ', 25 वास्तव में एक नाव के रूप में प्रतिनिधित्व किया जा सकता है नहीं" के रूप में इलाज "है। यह सिर्फ इतना है कि 'पाउ' पूरी तरह सटीक नहीं है, और इस अवसर पर किसी कारण से कम छूट गई है। कई मूल्यों के लिए यह संभवतः पूरी तरह सटीक नहीं हो सकता है, क्योंकि गणितीय रूप से सही उत्तर सटीक फ्लोट नहीं है, लेकिन इन गणनाओं के लिए यह हो सकता है, और इसलिए यह एक गुणवत्ता-कार्यान्वयन मुद्दा है चाहे वह है या नहीं। –
यह भी देखें कि http://stackoverflow.com/questions/101439/the-most- कुशल-way-to-implement-an-integer-based-power-function-powint-int के पूर्णांक संस्करण को कार्यान्वित करने के तरीके के बारे में चर्चा के लिए पाउ() –
पूर्णांक एक्सपोनिएशन के लिए 'पाउ' का उपयोग न करें। बहुत बेहतर, सुरक्षित तरीके हैं। वैसे, आप इस व्यवहार को किस मंच पर प्राप्त कर रहे हैं? मैंने सोचा कि एक अच्छा 'पाउ' हमेशा पूर्णांक के लिए सटीक होगा जहां सटीक परिणाम 'डबल' में फिट बैठता है। –