[問題]關於三角函數裡面丟變數

看板C_and_CPP作者 (嗯噹貢)時間14年前 (2010/05/11 10:44), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串1/1
各位前輩您好,關於三角函數裡面丟變數,產生了一些問題,程式如下 希望能為我解答 #include "stdafx.h" #include "iostream" #include <stdlib.h> #include <stdio.h> #include <math.h> #include <complex> using namespace std; double PI = 3.1415918; int _tmain(int argc, _TCHAR* argv[]) { double dwave; for(dwave=500;dwave<=500;dwave++)// define Wavelength axis { int i,j; const double fND = 500/4;//nf*df = wave / 4 double dAngleDegree = 2 * PI *fND / dwave; cout <<cos(dAngleDegree)<<endl; cout <<dAngleDegree<<endl; cout <<cos(1.5708)<<endl; } system("PAUSE"); } 最後結果 4.26795e-007 1.578 -3.67321e-006 照理說cos(dAngleDegree)=cos(1.5708)=-3.67321e-006 但cos(dAngleDegree)=4.26795e-007 請問是哪裡出問題 謝謝各位大大解答,萬分感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.18.48.120

05/11 10:58, , 1F
printf("%.16f\n", dAngleDegree);
05/11 10:58, 1F

05/11 10:58, , 2F
再把 dAngleDegree 換成 1.5708 去印印看就知道了....
05/11 10:58, 2F

05/11 10:58, , 3F
cout印出的有效位數讓你以為兩個數一樣, 其實並不一樣.
05/11 10:58, 3F

05/11 10:59, , 4F
兩數剛好過了PI/2的分野, 所以cos出來就有+-之差....
05/11 10:59, 4F

05/11 10:59, , 5F
雖然e-006~-007, 這個值已經是小數六位以後數字的事了:)
05/11 10:59, 5F

05/11 12:56, , 6F
感謝你A 我馬上去試試看 謝謝你啦
05/11 12:56, 6F
文章代碼(AID): #1BwCIAlI (C_and_CPP)