TQuery.fieldbyname().asfloat 跟TQuery.fieldbyname().asinteger的問題 |
答題得分者是:hagar
|
firesu
中階會員 發表:26 回覆:28 積分:55 註冊:2004-12-27 發送簡訊給我 |
aa 跟bb 欄位是double,
Qy1 先下sql 'select sum(aa),aum(bb) from XXXXX' open 之後sum(aa) 跟 sum(bb) 的值都是1734056.8 在程式寫判斷時 Qy1.Fields[0].AsFloat-Qy1.Fields[1].AsFloat= 2.3283064365e-10 <---- Qy1.Fields[0].AsInteger-Qy1.Fields[1].AsInteger= 0 用asfloat來相減怎麼不是0..? sql直接下select sum(aa)-sum(bb) from xxxx 出的值也不是0..是2.3283064365e-10 |
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
用 AsFloat 本來就不會準
參考: http://groups.google.com.tw/group/borland.public.delphi.vcl.components.using/browse_thread/thread/e6d5bd49fde25666/834937675a5839cb?lnk=st&q=AsFloat + delphi&rnum=13&hl=zh-TW#834937675a5839cb 其中有這麼一段: This is an age old programming mistake (I have made it myself...). It is NOT a Delphi specific problem. Floating point values, by definition, are estimates. Internally, they result from a computation, not a stored actual value. If you want to minimize rounding errors, use currency. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |