ن یه کدی نوشتم که توش یه عدد اعشاری میگیره و میده به تابع تانژانت و جوابشو نمایش میده، اما وقتی جواب این کد رو با جواب ماشین حساب ویندوز مقایسه میکنم میبینم خیلی احتلاف دارن, چرا؟
کسی میتونه راهنماییم کنه؟
ماشین حساب ویندوز پیش فرض زاویش بر حسب درجه هست. زاویه ی نیم صفحه بر حسب درجه برابر 180 هست ولی بر حسب رادیان 3.1415926535897 ... هست. پس اگه می خوای مثل پیش فرض ماشین حساب ویندوز از درجه استفاده کنی باید زاویه رو از درجه به رادیان تبدیل کنید یعنی ضرب در pi (که 3.14 ... هست) و بعد تقسیم بر 180 کنید. یا در کل میشه گفت ضرب در 0.01745329251994329576923690768489 کنید.
و یه سوال دیگه, برای محاسبه ی لگاریتم در مبنای 2 باید از log2 استفاده کرد اما ویژوال استادیو 2010 این تابع رو نداره!
چیکارش میشه کرد؟
در یک تاپیک دیگه می پرسیدید بهتر بود. میشه از تقسیم ln اون عدد بر ln 2 به جواب رسید. پس می تونید یک تابع بنویسید که این کار رو انجام بده و یک نکته اینکه چون ln 2 مقدارش مشخصه (بهتره از ماشین حساب ویندوز کمک بگیرید) درست تر اینه که هر دفعه اون رو حساب نکنیم و به شکل ثابت عدد رو بر اون تقسیم کنیم. یعنی :
#define LOG_2 0.69314718055994530941723212145818
long double Log2(const long double x)
{
return (logl(x) / LOG_2);
};