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

如何將小數點第三位之後無條件捨去

答題得分者是:mcho
shyu_ting
一般會員


發表:13
回覆:25
積分:12
註冊:2002-11-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-12-25 18:21:32 IP:203.70.xxx.xxx 未訂閱
請教各位先進: 如題,如何將浮點數中的小數點第三位之後做無條件捨去,不知在 delphi 中有何語法試函數可以達成....感激
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-12-25 21:00:20 IP:203.217.xxx.xxx 未訂閱
引言: 請教各位先進: 如題,如何將浮點數中的小數點第三位之後做無條件捨去,不知在 delphi 中有何語法試函數可以達成....感激
function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double; Description Call RoundTo to round AValue to a specified power of ten. AValue is the value to round. ADigit indicates the power of ten to which you want AValue rounded. It can be any value from ?7 to 37 (inclusive).
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-26 09:44:51 IP:210.202.xxx.xxx 未訂閱
引言: 請教各位先進: 如題,如何將浮點數中的小數點第三位之後做無條件捨去,不知在 delphi 中有何語法試函數可以達成....感激
可以用數學解決
function RoundX(const AValue: Double; const ADigit: Integer): Double;
var i: Extended;
begin
  i := Power(10, ADigit);
  Result := Round(AValue * i) / i;
end;
使用方法 RoundX(實數, 小數位數)
------
將問題盡快結案也是一種禮貌!
shyu_ting
一般會員


發表:13
回覆:25
積分:12
註冊:2002-11-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-26 10:07:43 IP:203.70.xxx.xxx 未訂閱
感謝你的解答,但我加入你說的function執行時會出現 power 這個function找不到,不知您是否知道為什麼??  謝謝    
引言:
引言: 請教各位先進: 如題,如何將浮點數中的小數點第三位之後做無條件捨去,不知在 delphi 中有何語法試函數可以達成....感激
可以用數學解決
function RoundX(const AValue: Double; const ADigit: Integer): Double;
var i: Extended;
begin
  i := Power(10, ADigit);
  Result := Round(AValue * i) / i;
end;
使用方法 RoundX(實數, 小數位數)
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-26 11:41:48 IP:61.219.xxx.xxx 未訂閱
直接就有現成的, 為何不用 function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double 例: var double d1,d2:integer; begin d1:=345.33333; d2:=Round(d1, 3); end; RoundTo, Power等均須在user中加入math
shyu_ting
一般會員


發表:13
回覆:25
積分:12
註冊:2002-11-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-26 13:32:39 IP:203.70.xxx.xxx 未訂閱
ccchen大大:   小弟是新手,怎麼也沒法執行下列所述之程式,可否舉個完整一點的程式,包 括函數宣告...謝啦    
引言: 直接就有現成的, 為何不用 function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double 例: var double d1,d2:integer; begin d1:=345.33333; d2:=Round(d1, 3); end; RoundTo, Power等均須在user中加入math
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2002-12-26 14:05:06 IP:203.217.xxx.xxx 未訂閱
引言: ccchen大大: 小弟是新手,怎麼也沒法執行下列所述之程式,可否舉個完整一點的程式,包 括函數宣告...謝啦
Sorry , 是d2:=RoundTo(d1,-3);
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2002-12-26 14:43:09 IP:210.202.xxx.xxx 未訂閱
引言: 直接就有現成的, 為何不用 function RoundTo(const AValue: Double; const ADigit: TRoundToRange): Double 例: var double d1,d2:integer; begin d1:=345.33333; d2:=Round(d1, 3); end; RoundTo, Power等均須在user中加入math
ccchen 兄 RoundTo 在我的 D5 中找不到耶! 是 D6 以上才有嗎 ?
------
將問題盡快結案也是一種禮貌!
shyu_ting
一般會員


發表:13
回覆:25
積分:12
註冊:2002-11-04

發送簡訊給我
#9 引用回覆 回覆 發表時間:2002-12-26 15:53:53 IP:203.70.xxx.xxx 未訂閱
ccchen & danny 兄 你們的方法我終於都試過了,也都可執行,但你們的function出來的結果會將小數 點第三位以後四捨五入,而我需要的結果是【無條件捨去】...如 d1:=3.456789 我需要的結果是能得到3.456而不是3.457 還有勞各位動動腦....給後進一點提示.....感激!!!    
引言:
引言: ccchen大大: 小弟是新手,怎麼也沒法執行下列所述之程式,可否舉個完整一點的程式,包 括函數宣告...謝啦
Sorry , 是d2:=RoundTo(d1,-3);
mcho
初階會員


發表:57
回覆:106
積分:42
註冊:2002-11-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2002-12-26 16:42:57 IP:61.224.xxx.xxx 未訂閱
Hi! shyu_ting: 我建議你先把數值程 1000 後再用Trunc取整數再除1000 雖然麻煩一點,但準確,如要4捨5入建議不要用Round函數,因為 Delphi的Round不是真正的4捨5入^.^ 何明昌
------
何明昌
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2002-12-27 07:35:12 IP:61.219.xxx.xxx 未訂閱
d2:=Trunc(d1 * 1000)/1000) 如要4捨5入建議不要用Round函數,因為Delphi的Round不是真正的4捨5入^.^ 四捨六入, 五成雙, 如此"捨"和"入"的概率才一樣大.
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2002-12-27 10:10:59 IP:61.221.xxx.xxx 未訂閱
差個花!!! Edit1.Text:=copy(Edit1.Text,Pos('.',Edit1.Text),4);
------
======================
昏睡~
不昏睡~
不由昏睡~
系統時間:2024-11-23 5:30:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!