Delphi 除法有問題 |
尚未結案
|
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
大大, / 和 div 是 Delphi 除法的運算了,
如果要用除法來計算繪圖中的列或行值, 則因為 / 傳回的是 Extended,又不能用 Integer() 強制轉換,
不方便使用於繪圖計算,因為繪圖一般都用整數來計算。 用 div 的話會有四捨五入的問題,以決定列號為例,若列高10 pixels
99 div 10,會傳回10,即第10列,但其實應該是第 9 列才對,div 不適用。 但如果用 C 語言的 /,則會傳回 9,得到第 9 列,這就正確了。
最後我只好用 inline 組合語言來寫個只會傳回"商"整數的除法函式,
真感慨,都已經使用 Delphi 這套不得了的工具了,
還得為個除法而要動用組合語言。
除了動用組合語言,還有別的方法嗎?
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 用 div 的話會有四捨五入的問題,以決定列號為例,若列高10 pixels 99 div 10,會傳回10,即第10列,但其實應該是第 9 列才對,div 不適用。cancer 你好 / :除法運算 div :取商數運算 Mod :取餘數運算 因此 99 div 10 = 9 (怎麼會傳回10 呢),而pixels的註標是從0開始計算的,0:第1列、1:第2列....故而9:第10列,所以要得正確的列數必須將得到的值再減1即可,如:(99 div 10)-1 才對啊! _______________________________________ 深藍的魚,祝您好運..........連連 |
Miles
尊榮會員 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
RogerHer
一般會員 發表:11 回覆:39 積分:10 註冊:2002-03-13 發送簡訊給我 |
|
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
|
ko
資深會員 發表:28 回覆:785 積分:444 註冊:2002-08-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |