English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

各位大大我想請問一下~
如果現在我讀取一個字元陣列
裡面內容大概是 "0.672 0.589 0.469 0.2"
每個數字中間用TAB鍵隔開
那我要怎樣轉換成FLOAT陣列,裡面陣列內容是有小數點數字呢?
轉換後內容變成(假設陣列名稱是A)
A[0] = 0.672
A[1] = 0.589
A[2] = 0.469
A[3] = 0.2

另外我的數字都很大(小數點位數有9)
像是0.186440678這種的,程式碼要怎麼修改?

麻煩知道的人給個詳解~~最好有程式碼~謝謝

2007-09-05 16:37:47 · 2 個解答 · 發問者 010 1 in 電腦與網際網路 程式設計

2 個解答

#include
#include
#include
int main(int argc, char* argv[]){
//=====START=====//
char fstr[]="0.672\t0.589\t0.469\t0.2";
char *p,sep[]="\t";
double fdata[4];
int i=0;
printf("A String data: %s\n",fstr);
p=strtok(fstr,sep);
while(p!=NULL){
fdata[i]=atof(p);
printf("fdata[%d]= %lf\n",i,fdata[i]);
i++;
p=strtok(NULL,sep);
}
//=====END=====//
system("PAUSE");
return 0;
}

2007-09-06 16:52:54 · answer #1 · answered by Big_John-tw 7 · 0 0

不能用 float!
它只有約 7 位有效!
你要用 double

2007-09-06 03:16:40 補充:
上述〝不能用 float〞是指會有明顯誤差。
你若不在意誤差,用 float 也可以寫得出來。

類似
for (i=0; i scanf("%f", &A[i]); // 如果是 double 要用 %lf,不可用 %f

細節、錯誤未處理。你試試看。

2007-09-05 18:10:26 · answer #2 · answered by ? 7 · 0 0

fedest.com, questions and answers