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

float形態的存檔

尚未結案
isthatu
初階會員


發表:80
回覆:47
積分:25
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-03-06 16:09:40 IP:210.192.xxx.xxx 未訂閱
請問各位一下 我有一個欄位型態為FLOAT 有時我打入資料存檔時 SHOW出來的數字 與我用QUERY ANALYZER查詢的數值並不相同 例如 50.3 存進去的卻是50.2999999999997 因這欄位 日後會最加總動作 可能數量一多就會出現誤差 那我在 beforePost 做以下列動作 X.FieldByName('ipoint').AsString:= format('%8.2f',[X.fieldbyname('ipoint').asfloat]); 還是沒辦法將它存成 50.3 它還是存成 50.2999999999997 怪怪 是不是要用其他方式來存檔 還是???? BCDEFHIJKLMNOPQRSTUVWXZ
------
BCDEFHIJKLMNOPQRSTUVWXZ
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-03-06 17:53:10 IP:63.84.xxx.xxx 未訂閱
您好﹗    當我們在專案中使用BD存取技術時, 由于資料形態的處理機制可能就牽扯到Object Pascal, SQL Links驅動程式和資料庫本身的資料形態轉換, 對于大部分的資料形態并不會發生問題, 但是對于浮點數而言, 有時就會出現如您所述的現象, 當浮點數值存入資料庫時, 就會發生一些變化.    解決的方法, 可以依靠BDE Administator中的ENABLE BCD項目的設定, 維持預設值False將如同上述情況, 浮點數值經過層層轉換而發生精确度改變的結果, 如果將參數值改為True, BDE在處理數值資料時將藉由Binary Coded Decimal(BCD)格式來傳送, 這樣就可以避免出現輸入和存入的資料不一致了.    具體設定方法如下: 1. 開啟BDE Administator中 2. Configuration頁次/Drivers/Native/MSSQL中, 將ENABLE BCD項目設定為True    P.S 當ENABLE BCD項目設定為True后﹐小數點以下精度只剩4位﹒    參考看看!        ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
luowy651
高階會員


發表:257
回覆:313
積分:114
註冊:2003-04-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-03-06 20:54:55 IP:61.164.xxx.xxx 未訂閱
您好: 把float换成decimal试试
eric039
中階會員


發表:57
回覆:126
積分:51
註冊:2002-11-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-03-08 16:02:57 IP:211.75.xxx.xxx 未訂閱
把這一行改成這樣試看看    X.FieldByName('ipoint').AsString:= FloatToStr(SimpleRoundTo(X.fieldbyname('ipoint').asfloat,-2)); Eric Lin
------
Eric Lin
系統時間:2024-11-25 17:40:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!