線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:632
推到 Plurk!
推到 Facebook!

請問一下BCB和TC

尚未結案
gofome
一般會員


發表:23
回覆:9
積分:6
註冊:2003-05-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-08 11:10:19 IP:61.221.xxx.xxx 未訂閱
相同的程式碼 在這二個環境下 跑出的值不同(差在小數第五位以下) 這樣算正常吧 是不是程式編譯的方式不同,所導致 TC跑出來的值 0.000000 0.000000 0.000000 0.000200 0.000008 0.020008 0.000400 0.000032 0.040016 0.000600 0.000072 0.060024 0.000799 0.000128 0.080032 BCB跑出來的值 0.000000 0.000000 0.000000 0.000167 0.000007 0.020007 0.000333 0.000027 0.040013 0.000500 0.000060 0.060020 0.000666 0.000107 0.080027 是不是用其他的程式編譯也會有相同的問題
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-09 21:50:11 IP:211.76.xxx.xxx 未訂閱
您應該是有用到 float 在作運算吧,如果用 double 應該會比較好一點。 按理說,相同的運算式程式碼 BCB 與 TC 的結果應該會相同,如果有不同,可能的原因是,運算式較複雜,又只使用 float 來存變數,而 compiler 的最佳化的設定不同或是最佳化的效果不同,或是叫用函式 Library 不同,導致結果不同。    http://www.ViewMove.com 視動自動化科技股份有限公司 ViewMove Technologies, Inc.
------
http://www.ViewMove.com
bio
一般會員


發表:42
回覆:36
積分:20
註冊:2003-03-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-12 16:35:27 IP:218.165.xxx.xxx 未訂閱
gofome您好 方便將您的source放上來看嗎
jimmy_and_you
初階會員


發表:20
回覆:74
積分:33
註冊:2003-05-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-14 11:35:27 IP:202.145.xxx.xxx 未訂閱
不論用float 在作運算,或用 double 基本上浮點數只是取一個近似值,只是用 double 更為精確. 至於為何BCB與TC跑出來的答案為何不同?這應該跟編輯程式用來記計算浮點數的內碼(內部指令)有些許不一樣,所以跑出來的答案可能會有一點點的誤差,再者有些COMPILER可以選擇用軟體模擬或是直接用有含浮點運算的CPU做處裡,答案可也會不一樣,所以在用float 時最好有些容許小錯誤的措施,例如:    float i=2.59 : : if( i>2.5899 && i<2.5901 ) //不要直接寫成 if( i==2.59 )
系統時間:2024-06-27 0:42:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!