小數位數的保留代碼與大小寫轉換

小數位數的保留代碼
 最近寫了兩個小工具,要將小數部分四捨五入至一位小數和整數,可函數中round()是所謂的銀行家進位法,實在用不了。無奈找度娘詢問了一陣,結果不盡人情呀,最後找到一個保留兩位小數的代碼,通過修改後令人滿意。現分享大家留着備用:
============================
保留1位小數
===========================
 function BL1(s: real): real;
var
r1, r2: real;
s1, s2: string;
begin
r1 := int(s);
r2 := frac(s);
s1 := copy(floattostr(r1), 1, length(floattostr(r1)));
if length(floattostr(r2)) >= 4 then
begin
if strtoint(copy((floattostr(r2)), 4, 1)) >= 5 then   //小數第三位開始複製一位0.00
if strtoint(copy((floattostr(r2)), 3, 1)) = 9 then
begin
s1 := inttostr(strtoint(s1) + 1);
s2 := '';
end
 else
 S2 := inttostr(strtoint(copy((floattostr(r2)), 3, 1)) + 1)
else if copy((floattostr(r2)), 3, 1) = '0' then
  s2:=''
else s2 := copy(floattostr(r2), 3, 1);
end
 else s2 := copy(floattostr(r2), 3, 1);
result := strtofloat(s1 + '.' + s2);
end;
====================
調用
=====================
 label3.Caption  :=floattostr(BL(strtofloat(edit1.text)));
================================
四捨五入到整數
================================
function BL0(s: real): real;
var
r1, r2: real;
s1, s2: string;
begin
r1 := int(s); //取整數部分
r2 := frac(s); //取小數部分
s1 := copy(floattostr(r1), 1, length(floattostr(r1)));   //複製R1,複製位數爲R1長度
if length(floattostr(r2)) >= 3 then     //如果小數部分長度>=3
if strtoint(copy((floattostr(r2)), 3, 1)) >= 5 then  //從小數部分第三位開始複製一位數
s1 := inttostr(strtoint(s1) + 1); //如果第一位小數大於5就向整數個位進1
 result := strtofloat(s1);
 end;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章