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

小數的問題

缺席
kkym
一般會員


發表:17
回覆:13
積分:6
註冊:2003-04-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-05 14:44:09 IP:219.133.xxx.xxx 未訂閱
抱歉,我之前有發問,但是我不知為何被版主刪除了、、、我也不好意思問,其實這裡對我的幫助很多、、我先謝謝版主、、、如果我有哪裡錯,麻煩告知我。 這兩天,我是了很多方法,還是無法解決我的問題、、所以我只好又上來尋求各位的幫忙。 我寫了一支程式,都快寫好了、、、就差在DBedit輸入小數的問題了。 我的SQL-2000欄位是Numeric(9,4),小數點4位、、但是我在Delphi的程式裡,輸入2.4、、、只要一POST,就變成2.3999、、、我應該如何處理,才能我想要的2.4呢? 非常感謝。
SimonLee
一般會員


發表:15
回覆:23
積分:7
註冊:2003-09-20

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-05 14:57:32 IP:218.18.xxx.xxx 未訂閱
你的Field是否用TFloatField呀,如果用TFloatField的話,就改用TBDEField吧,比較會準確
kkym
一般會員


發表:17
回覆:13
積分:6
註冊:2003-04-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-05 14:59:33 IP:219.133.xxx.xxx 未訂閱
抱歉,補充一下、、、我已經將 ENABLE BCD 改為 TRUE,還是沒有用
SimonLee
一般會員


發表:15
回覆:23
積分:7
註冊:2003-09-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-05 15:06:46 IP:218.18.xxx.xxx 未訂閱
function Rounding(Num: Double; DecPt: integer): Double; var FirstNum, SecondNum, PoNum: Double; i: integer; begin FirstNum := Int(Num); SecondNum := Frac(Num); PoNum := 1; for i := 1 to DecPt do PoNum := Int(PoNum * 10); if Num > 0 then SecondNum := Int((SecondNum * PoNum) 0.51) / PoNum else SecondNum := Int((SecondNum * PoNum)- 0.51) / PoNum; Rounding := FirstNum SecondNum; end; 試一試用這個函數,我的軟件對每一個的數字Field在讀出或寫入時都會執行這個函數,確保數字的準確性 發表人 - SimonLee 於 2004/11/05 15:09:54
shpeng
初階會員


發表:6
回覆:67
積分:49
註冊:2002-12-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-05 16:39:41 IP:220.130.xxx.xxx 未訂閱
建議用 float 型態儲存 輸出的時候再格式化 避免 1.四捨五入的統計誤差 例如 當合計時筆數為 2000 筆時 會有 0.00005 * 2000 = 1 ==取之於斯,用之於斯==
------
==取之於斯,用之於斯==
系統時間:2024-06-30 7:02:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!