समस्या पूर्णांक काट-छांट है .. आप दो पूर्णांकों => परिणाम विभाजित कर रहे हैं फेंक दिया आंशिक भाग के साथ एक अन्य पूर्णांक हो जाएगा। (इसलिए उदाहरण के लिए जब एक पूर्णांक विभाजन का असली परिणाम 3.9 होगा, तो छिड़काव इसे 3 (यानी यह गोल नहीं करता)) करेगा।
आपके मामले में, अगर आप को यह बदलने के लिए:
x2 = 360/4095.0; /* one of the operands now has a decimal point */
आप
0.087912, 0.087912
आउटपुट के रूप में
मिलेगा। (यानी, वह "पदोन्नत" कर दिया जाएगा फ्लोट करने के लिए/डबल)
अर्थात, और जैसे ही एक या विभाजन ऑपरेटर /
की ऑपरेंड के दोनों के रूप में नाव/डबल्स कर रहे हैं, परिणाम भी हो जाएगा। इसलिए मैं
x2 = 360.0/4095.0;
या
x2 = 360.0/4095;
करने के लिए x2
बदल गया होगा और इसके बाद के संस्करण एक ही परिणाम प्राप्त होंगे।
जैसा कि @chris द्वारा उल्लिखित है, केवल .
का उपयोग करना पर्याप्त है।
आप पहले से ही लंबे डबल्स साथ काम कर रहे .. मैं आंतरिक रूप से नहीं लगता कि जब तक आप कुछ विशेष पुस्तकालय का उपयोग आप कुछ भी बदल सकते हैं, लेकिन आप निश्चित रूप से अधिक अंक प्रदर्शित कर सकते हैं करते हैं:
के बारे में सटीक ऊपर अपने प्रश्न पुन
। उदाहरण के लिए,
printf("%Lf, %.20Lf \n",x1, x2);
0.087912, 0.08791208791208791895
अंत में, निकलेगा रूप @ EDA-क्यूए मोर्ट-ओरा-y हमें याद दिलाता है, आप भी मूल्यों कुछ प्रकार पर कास्ट कर सकते हैं, लेकिन यह मायने रखती है जब आप इसे करते हैं। एक साधारण उदाहरण (ध्यान दें कि मानों किसी भी मामले में काम के बाद float
के रूप में अंत के बाद से v
एक float
है): एक ही प्रकार की वस्तुओं पर
float v = 0;
/* values shown are BEFORE assignment */
v = (5/2); /* value is 2 due to integer truncation before assignment */
v = (float) (5/2); /* 2.0 as integer division occurs 1st, then cast to float */
v = (float) 5/2; /* 2.5 since 5 becomes 5.0 through casting first. */
क्रिस और लेवॉन उत्तर के लिए धन्यवाद। क्या वसूली बढ़ाने का कोई तरीका है। – katta
वास्तव में अधिक अंक संग्रहीत करने के लिए, आपको एक मनमानी-सटीक लाइब्रेरी की आवश्यकता होगी। लेविन कहते हैं, या सी ++ में 'std :: setprecision' के साथ बस और अधिक प्रदर्शित किया जा सकता है। – chris
@ क्रिस मैं कम स्तर पर मोटर नियंत्रण कोड पर काम कर रहा हूं सी क्यूएनएक्स एम्बेडेड सिस्टम पर सी है। मैं इसे सी ++ कोड के लिए ध्यान में रखूंगा। – katta