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

把IntToStr改成FloatToStr時,我執行後最後幾行卻會出現誤差項

答題得分者是:Stallion
mickey10112001
一般會員


發表:29
回覆:14
積分:8
註冊:2006-08-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-25 23:50:48 IP:218.170.xxx.xxx 訂閱
請問各位大大:
當我把IntToStr改成FloatToStr時,我執行後最後一行卻會出現誤差項
X:2.11595619697539E-38 Y:1.05797809848769E-37 Z:1.12103877145985E-43
X:4.23191239395078E-38 Y:1.05797809848769E-37 Z:1.12103877145985E-43
X:4.23191239395078E-38 Y:0 Z:0
X:4.23191239395078E-38 Y:0 Z:0
X:4.23191239395078E-38 Y:0 Z:0
X:2.11595619697539E-38 Y:0 Z:0
不知道為何會有這些多餘的誤差項出現,我該如何將這些誤差項消除呢??
執行後的結果 Usb:0 X:5 Y:0 Z:0 Usb:0 X:10 Y:0 Z:0 Usb:0 X:10 Y:0 Z:0 Usb:0 X:10 Y:0 Z:0 Usb:0 X:10 Y:0 Z:0 Usb:0 X:5 Y:0 Z:0 Usb:0 X:0 Y:0 Z:25 Usb:0 X:0 Y:0 Z:25 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:-20 Usb:0 X:0 Y:0 Z:-20 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:-5 Usb:0 X:0 Y:0 Z:-5 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:-5 Y:0 Z:0 Usb:0 X:-10 Y:0 Z:0 Usb:0 X:-10 Y:0 Z:0 Usb:0 X:-10 Y:0 Z:0 Usb:0 X:-10 Y:0 Z:0 Usb:0 X:-5 Y:0 Z:0 Usb:0 X:0 Y:25 Z:0 Usb:0 X:0 Y:25 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:25 Usb:0 X:0 Y:0 Z:25 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:-25 Usb:0 X:0 Y:0 Z:-25 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:-25 Z:0 Usb:0 X:0 Y:-25 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:0 Y:0 Z:0 Usb:0 X:2.1159561969E-38 Y:1.057978098E-37 Z:1.12103877145985E-43 Usb:0 X:4.2319123939E-38 Y:1.057978098E-37 Z:1.12103877145985E-43 Usb:0 X:4.2319123939E-38 Y:0 Z:0 Usb:0 X:4.2319123939E-38 Y:0 Z:0 Usb:0 X:4.2319123939E-38 Y:0 Z:0 Usb:0 X:2.1159561969E-38 Y:0 Z:0 <textarea class="cpp" rows="10" cols="60" name="code">void __fastcall TForm1::Button8Click(TObject *Sender) { Label2->Caption ="Step3 is running!Please wait!"; int count,count1,count2; double X1,Y1,Z1; double X2,Y2,Z2; double X3,Y3,Z3; count2=Memo3->Lines->Count; Memo3->Clear() ; for(count=0,count1=0;countProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3/4)) "\t" "Z:" FloatToStr(float(Z3/4)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3/4)) "\t" "Z:" FloatToStr(float(Z3/4)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3/4)) "\t" "Z:" FloatToStr(float(Z3/4)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); } else if((X3<(-100))||(Y3<(-100))||(Z3<(-100))) { AnsiString str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/3)) "\t" "Y:" FloatToStr(float(Y3/3)) "\t" "Z:" FloatToStr(float(Z3/3)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/3)) "\t" "Y:" FloatToStr(float(Y3/3)) "\t" "Z:" FloatToStr(float(Z3/3)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/3)) "\t" "Y:" FloatToStr(float(Y3/3)) "\t" "Z:" FloatToStr(float(Z3/3)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); } else if ((X3<(-50))||(Y3<(-50))||(Z3<(-50))) { AnsiString str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/2)) "\t" "Y:" FloatToStr(float(Y3/2)) "\t" "Z:" FloatToStr(float(Z3/2)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/2)) "\t" "Y:" FloatToStr(float(Y3/2)) "\t" "Z:" FloatToStr(float(Z3/2)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); } else if((X3>150)||(Y3>150)||(Z3>150)) { AnsiString str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3/4)) "\t" "Z:" FloatToStr(float(Z3/4)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3/4)) "\t" "Z:" FloatToStr(float(Z3/4)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3/4)) "\t" "Z:" FloatToStr(float(Z3/4)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3/4)) "\t" "Z:" FloatToStr(float(Z3/4)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); } else if((X3>100)||(Y3>100)||(Z3>100)) { AnsiString str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/3)) "\t" "Y:" FloatToStr(float(Y3/3)) "\t" "Z:" FloatToStr(float(Z3/3)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/3)) "\t" "Y:" FloatToStr(float(Y3/3)) "\t" "Z:" FloatToStr(float(Z3/3)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float(X3/3)) "\t" "Y:" FloatToStr(float(Y3/3)) "\t" "Z:" FloatToStr(float(Z3/3)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); } else if((X3>50)||(Y3>50)||(Z3>50)) { AnsiString str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/1)) "\t" "Y:" FloatToStr(float(Y3/2)) "\t" "Z:" FloatToStr(float(Z3/2)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float(X3/2)) "\t" "Y:" FloatToStr(float(Y3/2)) "\t" "Z:" FloatToStr(float(Z3/2)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/3)) "\t" "Y:" FloatToStr(float(Y3/2)) "\t" "Z:" FloatToStr(float(Z3/2)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/4)) "\t" "Y:" FloatToStr(float(Y3*0)) "\t" "Z:" FloatToStr(float(Z3*0)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/5)) "\t" "Y:" FloatToStr(float(Y3*0)) "\t" "Z:" FloatToStr(float(Z3*0)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float(X3/6)) "\t" "Y:" FloatToStr(float(Y3*0)) "\t" "Z:" FloatToStr(float(Z3*0)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); } else { AnsiString str="Usb:" FloatToStr(0) "\t" "X:" FloatToStr(float (X3/10)) "\t" "Y:" FloatToStr(float (Y3/2)) "\t" "Z:" FloatToStr(float (Z3/2)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float (X3/5)) "\t" "Y:" FloatToStr(float (Y3/2)) "\t" "Z:" FloatToStr(float (Z3/2)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float (X3/5)) "\t" "Y:" FloatToStr(float (Y3*0)) "\t" "Z:" FloatToStr(float (Z3*0)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float (X3/5)) "\t" "Y:" FloatToStr(float (Y3*0)) "\t" "Z:" FloatToStr(float (Z3*0)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float (X3/5)) "\t" "Y:" FloatToStr(float (Y3*0)) "\t" "Z:" FloatToStr(float (Z3*0)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); count1=count1 1; str="Usb:" IntToStr(0) "\t" "X:" FloatToStr(float (X3/10)) "\t" "Y:" FloatToStr(float (Y3*0)) "\t" "Z:" FloatToStr(float (Z3*0)) "\t"; Application->ProcessMessages(); Memo3->Lines->Insert(count1,str); } } </textarea>

編輯記錄
taishyang 重新編輯於 2007-06-26 09:25:53, 註解 將文章分類成[問題]‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-26 00:04:11 IP:211.22.xxx.xxx 未訂閱
1.精度轉換的老問題了~參考這篇,雖然是Delphi的,可是VCL函數都一樣,很容易改成BCB。
http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=88812
2.請將本討論文章類型改為「問題」。
3.您之前提問的問題很多可以「結案」了,煩請結案。
編輯記錄
Stallion 重新編輯於 2007-06-26 00:16:15, 註解 加幾句話。‧
系統時間:2024-05-05 23:57:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!