float形態的存檔 |
尚未結案
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
請問各位一下 我有一個欄位型態為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 發送簡訊給我 |
您好﹗ 當我們在專案中使用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 發送簡訊給我 |
|
eric039
中階會員 發表:57 回覆:126 積分:51 註冊:2002-11-30 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |