請教浮點數語整數之間運算的問題 |
尚未結案
|
kool0318
一般會員 發表:14 回覆:17 積分:6 註冊:2005-01-11 發送簡訊給我 |
|
jimmy_wei
高階會員 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
|
kool0318
一般會員 發表:14 回覆:17 積分:6 註冊:2005-01-11 發送簡訊給我 |
|
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
引言: aa,bb :integer; cc:double; bb:=aa*cc; 請教各位專家,如果要將aa*cc的結果,整數位以後無條件捨去,的結果丟給bb 要如何做? 有沒有類似 floattoint 的函數? 謝謝 procedure TForm1.Button1Click(Sender: TObject); var d1, d2: double; i, j: Integer; begin d1 := 10.5143; j := 10; // 先用一個double儲存結果 d2 := d1 * j; try // 用Trunc截取整數部份 i := Trunc(d2); except // 因Integer和Double長度不同, 有可能會轉換失敗 // Fail to truncates a real number to an integer. end; ShowMessage( IntToStr(i) ); end; 附帶一提, round並非無條件進位, 而是做五捨六入 function Round(X: Extended): Int64; Returns the value of X rounded to the nearest whole number.發表人 - zard 於 2005/02/01 17:53:30 |
stone0924
一般會員 發表:3 回覆:17 積分:14 註冊:2002-08-13 發送簡訊給我 |
Dear All,
由於 Delphi 的 Round 函式是 四捨六入伍成雙 所以我用下列 Function
謝謝! function rounds(x:double;n:integer):double; overload;
function rounds(x:double):integer;overload;
implementation
function rounds(x:double;n:integer):double;
const iX:double=0.0000000001;
var factor:double;
i:integer;
begin
factor:=1;
if n>0 then
for i:=1 to n do
factor:=factor*10;
if x<0 then
result:=round((x-iX)*factor)/Factor
else
result:=round((x iX)*factor)/factor;
end;
function rounds(x:double):integer;
const iX:double=0.0000000001;
begin
if x<0 then
result:=round(x-iX)
else
result:=round(x ix);
end;
|
jimmy_wei
高階會員 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
div 1是為了取整數的部份
div這個函數是取商數用的
mod是取餘數
SORRY...我的答案有一點問題
應該是 bb:= Round((aa*cc) div 1);
可是型態不同一定不能用
但是下面這個偷吃步也可以...
if Pos('.', FloatToStr(aa*cc)) > 0 then bb:= StrToInt(Copy(FloatToStr(aa*cc), 1, Pos('.', FloatToStr(aa*cc))-1)) else bb:= StrToInt(Copy(FloatToStr(aa*cc), 1, MAXINT)); |
kool0318
一般會員 發表:14 回覆:17 積分:6 註冊:2005-01-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |