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

作者: gir26354 (微糖去冰)   2016-12-06 18:52:11
開發平台(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值
謝謝大家幫我解惑
作者: x000032001 (版廢了該走了)   2016-12-06 18:58:00
yk[i+1] 越界了
作者: gir26354 (微糖去冰)   2016-12-06 19:24:00
您好 我改yk[51] 還是有其他數值會很怪~ 可以麻煩解答嗎發現給初始值就可以了 謝謝
作者: ilikekotomi (Young)   2016-12-06 19:49:00
ystar的沒初始化 有發現以後就不會忘記了
作者: gir26354 (微糖去冰)   2016-12-06 19:54:00
真的 看了一小時 以後絕對不會忘記了!!!!

Links booklink

Contact Us: admin [ a t ] ucptt.com