[問題] float運算值出來變很大

看板C_and_CPP (C/C++)作者 (微糖去冰)時間9年前 (2016/12/06 18:52), 編輯推噓0(005)
留言5則, 3人參與, 最新討論串1/1
開發平台(Platform): Win10 編譯器(DEC C++) 問題(Question):小弟我利用C語言算一些算式結果算出來有些是對的 不過有些會大的很誇張,也會出現-1.QNANO爬文查google之後還是沒辦 法解決想上來問各位是哪裡要改資料型態嗎? CODE: #include<stdio.h> #include<stdlib.h> #include<time.h> int main(void) { int i,j,k; srand(time(NULL)); int u1[50]; float ep[50]; float yk[50]; float ystar[50]; float u[50]; float V[2][5] = {{-0.9,1.8,0.4,0.5,0.7},{-0.2,0.7,-0.3,-1.4,0.5}}; float W[5][4] = {{-2.2,1.9,2.7,5.2},{-4.3,-2.9,0.5,1.8}, {-2.0,1.1,-0.6,1.5},{-1.2,1.3,-0.4,1.6},{3.1,1.3,1.2,2.2}}; for(i=0;i<50;i++) { u1[i]=(rand()%90)+1; u[i]=(float)u1[i]/100; //產生50個u[0,1] //printf(" %d. %1f\n",i,u[i]); yk[0]=0.0; ystar[0] =0.0; yk[i+1] = yk[i]*0.9048 + u[i]*0.09516; //得到50個yk for(j=0;j<4;j++) { for(k=0;k<5;k++) { ystar[i] = ystar[i] + ((V[0][k])*yk[i]+(V[1][k])*u[i])*(W[k][j]); } } printf("%d. %f\n",i,ystar[i]); } system("pause"); } 預期的正確結果(Expected Output):都是正常的值 錯誤結果(Wrong Output):會出現類似95478000000000或-1.QNANO值 謝謝大家幫我解惑 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.150.131 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1481021533.A.7E7.html

12/06 18:58, , 1F
yk[i+1] 越界了
12/06 18:58, 1F

12/06 19:24, , 2F
您好 我改yk[51] 還是有其他數值會很怪~ 可以麻煩解答嗎
12/06 19:24, 2F

12/06 19:39, , 3F
發現給初始值就可以了 謝謝
12/06 19:39, 3F

12/06 19:49, , 4F
ystar的沒初始化 有發現以後就不會忘記了
12/06 19:49, 4F

12/06 19:54, , 5F
真的 看了一小時 以後絕對不會忘記了!!!!
12/06 19:54, 5F
文章代碼(AID): #1OHfXTVd (C_and_CPP)
文章代碼(AID): #1OHfXTVd (C_and_CPP)