Thursday, 15 March 2012

c++ - cos giving out the wrong value -


<पूर्व> #include & lt; iostream & gt; # शामिल करें & lt; math.h & gt; #include "boost / math / constants / constants.hpp" const डबल pi = boost :: math :: constants :: pi & lt; डबल & gt; (); Int main () {डबल एक्स = 2; डबल y = 1; डबल कोण = 90; // दोहरे रैड में कोण {कोण * पी / 180}; // rads std :: cout & lt; & lt; "रेड:" & lt; & lt; राड & lt; & lt; std :: endl; //1.5708 - ठीक डबल सी = कॉस (आरड); Std :: cout & lt; & lt; "कॉस (रेड):" & lt; & lt; सी & lt; & lt; std :: endl; //6.12303e-017 - हैह? होना चाहिए ~ -3.2051033e-9 डबल s = sin (rad); Std :: cout & lt; & lt; "पाप (मूल):" & lt; & lt; S & lt; & lt; std :: endl; // 1 - ठीक x = x * c - y * s; Y = x * s + y * c; Std :: cout & lt; & lt; "(" & Lt; & lt; x & lt; & lt; "," & lt; & lt; y & lt; & lt; ")" & lt; & lt; std :: endl; वापसी 0; }

तो यह अजीब है, मैं एक रोटेशन करने की कोशिश कर रहा हूँ, लेकिन cos मुझे गलत मान दे रहा है यह -3.2051033e-9 के पास कुछ होना चाहिए, लेकिन मुझे 6.12303e-017 के साथ समाप्त होता है। मैंने अपने कोण को त्रिज्या में बदल दिया है और यह जांचता है। पाप (आरडी) सही मूल्य भी वापस देता है क्या देता है?

संपादित करें: कोड में एक त्रुटि है लेकिन सवाल से संबंधित नहीं है पर y = x * s + y * c; एक्स को शीर्ष पर घोषित मूल्य का उल्लेख करना चाहिए, लेकिन जैसा कि पिछले समीकरण अंत में y उस मान को ओवरराइड करता है गलत होगा।

प्रतिपादकों के स्पष्टीकरण के लिए धन्यवाद। मुझे कुछ भ्रमित हुआ।

cos (90) (डिग्री) है लगभग शून्य, जैसा कि 0.0 में है। एक नंबर वापस लेने के बारे में चिंता करना यह है कि e-17 बनाम ई-9 सार्थक नहीं है, वे दोनों मूल रूप से शून्य हैं।

परिणाम वास्तव में इस पर निर्भर करता है कि कैसे उन्होंने pi , 90.0 , 180.0 का प्रतिनिधित्व किया, और फ़ंक्शन में math.h


No comments:

Post a Comment