就是用查表法,事先計(jì)算好查找表,比如說我的應(yīng)用要求精確到1度,就建2個(gè)這樣的表。
站在用戶的角度思考問題,與客戶深入溝通,找到岱岳網(wǎng)站設(shè)計(jì)與岱岳網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋岱岳地區(qū)。
cosT[360] = {}
sinT[360]= {}
然后要計(jì)算的時(shí)候直接把你要計(jì)算的角度轉(zhuǎn)換成最接近這個(gè)角度的整數(shù),查表即可。
如果要更高的精度,就建更大的查找表
C語言里sin函數(shù)和cos函數(shù)是C標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)庫中的函數(shù),調(diào)用需要引入math.h頭文件。
一、sin()?函數(shù)描述:
C 庫函數(shù) double sin(double x) 返回弧度角 x 的正弦。sin() 函數(shù)的聲明:double sin(double x)。
參數(shù):x -- 浮點(diǎn)值,代表了一個(gè)以弧度表示的角度。
返回值:該函數(shù)返回 x 的正弦。
二、cos() 函數(shù)描述:
cos() 函數(shù)的功能是求某個(gè)角的余弦值。cos()?函數(shù)的聲明:double cos(double x)。
參數(shù):x -- 浮點(diǎn)值,代表了一個(gè)以弧度表示的角度。
返回值:該函數(shù)返回 x 的余弦。
擴(kuò)展資料:
相關(guān)的三角函數(shù):
double asin (double); 結(jié)果介于[-PI/2,PI/2]
double acos (double); 結(jié)果介于[0,PI]
double atan (double); 反正切(主值),結(jié)果介于[-PI/2,PI/2]
double atan2 (double,double); 反正切(整圓值),結(jié)果介于[-PI,PI]
參考資料來源:百度百科-math.h
scanf時(shí),float 用 %f ,double 用 %lf. 因?yàn)閟canf不知道你傳的是float還是double數(shù)的地址,你必須通過%f %lf來告訴它這一點(diǎn)。
printf時(shí),float、double都用%f,無需區(qū)分,因?yàn)榧词鼓銈鞯氖莊loat,也會被編譯器先自動轉(zhuǎn)換為double再交給printf.
本質(zhì)有問題。
cos(x) = x^0/0!-x^2/2!+x^4/4!-x^6/6!+……
這個(gè)公式是運(yùn)用泰勒公式把函數(shù) f(x)=cos(x) 在 x=0 點(diǎn)展開成多項(xiàng)式 ,當(dāng) n 不是很大時(shí) ,只有 x=0 附近的數(shù)才能算出比較準(zhǔn)確的值,而當(dāng) n 很大時(shí) n! 也非常大 ,這時(shí)若 x1 那么 x^n 也非常大 ,如果仍采用常規(guī)措施怎么可能會對呢?不溢出才怪。
給一些提示:
1,利用函數(shù)周期性,始終保持較小的 x ;
2,如果已經(jīng)求得 t = x^n/n! ,那么
x^(n+2)/(n+2)! = t * x^2 / ( (n+1)*(n+2)) ;
這樣整個(gè)運(yùn)算過程中就能盡量避免出現(xiàn)太大的值 ,并能提高效率 ,這只是個(gè)思路,實(shí)現(xiàn)時(shí)請注意細(xì)節(jié)。
順便給個(gè)粗略的實(shí)現(xiàn),僅供參考,如下:
double funcos(double e, double x)
{
int flag = 1,m = 0;
double k = 1 ,sum = 0;
x = fmod(x,2*3.1415926) ;
while( fabs(k) = e || fabs(sum) 1 ){
sum += flag*k;
k /= ( (m+1)*(m+2) / (x*x) );
m += 2;
flag = -flag;
}
return sum;
}
你的程序其他地方?jīng)]有問題,printf 不同于 scanf ,會自動對精度進(jìn)行擴(kuò)展,所以 printf("%f",...); 可以輸出 double 。
庫函數(shù)就是在c語言的內(nèi)部已經(jīng)聲明、定義好了的只用引用一些頭文件即可直接使用而不用自己額外定義的功能函數(shù),如printf,scanf,power,sin,cos等各種類型的函數(shù)。