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

關於浮點數轉整數的問題?

答題得分者是:timhuang
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-17 11:33:51 IP:61.219.xxx.xxx 未訂閱
請問如何將浮點數轉換成整數! 目前我知道有int Function(Extended):Extended; 可是傳回的值是Extended,所以不能直接丟到整數變數中 於是改成如下(滿爛的方法): var i : integer; begin i := strtoint(floattostr(int(9.36))); 可是總是覺得怪怪的 而且不會四捨五入 另一個方法更爛,如果要四捨五入 將浮點數先加0.5(如果是要到小數第一位時)再轉成字串 直接用pos捉到小數點位置,在取得以左的值轉成整數 請問有沒有直接的方法,能將浮點數做 @_@|||好像爛到爆 最後將一二兩個方法加起來數修改變成 var i : integer; j : single; begin j := 9.36; i := strtoint(floattostr(int(9.36 0.5))); 有沒有直覺一點的方法像 i := floattoint(j); or function 四捨五入(浮點數,到小數第幾位) => i := 四捨五入(j,1); ---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-17 11:48:02 IP:147.8.xxx.xxx 未訂閱
You may be interested in the function round and trunc.
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-17 13:04:18 IP:211.76.xxx.xxx 未訂閱
若你是要四捨五入的話, 可以參考這篇:    http://delphi.ktop.com.tw/topic.php?topic_id=21876
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-17 13:08:29 IP:61.218.xxx.xxx 未訂閱
引言: function 四捨五入(浮點數,到小數第幾位)
你所列的這個函式,我之前有實作一個,請參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=20544 但是它傳回的是string,你可依其需要修改 發表人 - ddy 於 2003/03/17 13:10:51
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-17 13:42:31 IP:211.76.xxx.xxx 未訂閱
參考下面程式 var n1:Extended; i:integer; v:variant; begin n1:=StrToFloat(Edit1.Text); v:=n1; i:=v; //i為n1是四捨五入到整數 end;
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-17 13:50:05 IP:61.219.xxx.xxx 未訂閱
看來round結果好像有時.5的狀態會怪怪的~~~ 要用trunc(i+0.5) 謝謝~~~ ---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
skurama
中階會員


發表:88
回覆:127
積分:73
註冊:2002-07-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-17 14:02:21 IP:61.219.xxx.xxx 未訂閱
To cmj: 謝謝你的提供, 可是如果打2.5時, 仍然是2~~ timhuang所提供的那一篇好像有說明到原因 不過內容是用round~ 好像是什麼"四捨六入 五成雙" ---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ----------------
------
----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
wushang
一般會員


發表:2
回覆:13
積分:13
註冊:2003-02-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-17 15:21:34 IP:218.16.xxx.xxx 未訂閱
我們習慣的四捨五入的函數﹕ function DoutoInt(a : Double) : integer; begin if (trunc(a*10) mod 10)>=5 then Result := trunc(a 1) else result := trunc(a); end;
系統時間:2024-05-07 19:05:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!