全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2085
推到 Plurk!
推到 Facebook!

存在txt檔的浮點數字,讀出來的值不精確!

 
MyBCB
一般會員


發表:4
回覆:7
積分:2
註冊:2006-07-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-19 11:27:35 IP:211.74.xxx.xxx 訂閱
我有一個vf.txt檔,內部存小數點的數字, 但是讀出來的時候,小數點都不不精確
請問要如何才能讀出精確的小數點數字?

FILE *stream;
float vf[9];

AnsiString TFileName;
TFileName="vf.txt";

stream = fopen(TFileName.c_str(), "r");

int i=0;
while((fscanf(stream,"%f",&vf[i])) !=EOF)
{
i ;
}

fclose(stream);



-----------------------------------------------
vf.txt 內部浮點數字,空格是 tab產生

30.424112 36.435821 42.3
66 81 96.4354
102.76303 126.7871 150.8551113

----------------------------------------
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-19 16:30:44 IP:219.84.xxx.xxx 未訂閱
用double來存取,並且使用AnsiString的ToDouble試試看
nqzl
一般會員


發表:0
回覆:1
積分:0
註冊:2005-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-20 09:00:33 IP:61.61.xxx.xxx 未訂閱
只要用文字檔方式存, 都會截掉小數後面的部份.
若要完整的紀錄小數, 建議你還是用 binary 格式存!
axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-20 20:11:22 IP:61.219.xxx.xxx 未訂閱
試試看
void __fastcall TForm1::FormCreate(TObject *Sender)
{
String x="123.12345678901";
ShowMessage(FormatFloat("0.00000000000",StrToFloat(x)));
}
//---------------------------------------------------------------------------

Language
Borland® Copyright © 2005 Borland Software Corporation. All rights reserved.

[C ] AnsiString FormatFloat (const AnsiString & format, const long double & value);
MyBCB
一般會員


發表:4
回覆:7
積分:2
註冊:2006-07-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-07-20 21:27:13 IP:211.74.xxx.xxx 訂閱

若從檔案讀出來"字串",會把 tab所表示的空白也讀進去,會出錯!


===================引 用 文 章===================

試試看
void __fastcall TForm1::FormCreate(TObject *Sender)
{
String x="123.12345678901";
ShowMessage(FormatFloat("0.00000000000",StrToFloat(x)));
}
//---------------------------------------------------------------------------

axsoft
版主


發表:681
回覆:1056
積分:969
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-07-21 11:19:24 IP:61.219.xxx.xxx 未訂閱
void __fastcall TForm1::FormCreate(TObject *Sender)
{
String x="123.12345678901";
ShowMessage(FormatFloat("0.00000000000",StrToFloat(x.Trim())));
}
//---------------------------------------------------------------------------

加個Trim()把空白去掉,
系統時間:2024-04-28 12:45:02
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!