四舍五入? ( 积分: 50 )

  • 主题发起人 主题发起人 xiaolinj79
  • 开始时间 开始时间
仔细看了下liuchong的代码
代码逻辑有点问题
实际上是先处理了0.255然后和整数相加
如果换成先加再处理才能体现不同数值的小数进行四舍五入得到正确的结果
 
我的四舍五入解决方法,供大家参考和讨论
function MyRound2(Num: double): Int64;
var
Tmp: double;
begin
Tmp := Num + 0.5;
If Tmp < Trunc(Num) + 1 Then
Result := Trunc(Num)
Else Result := Trunc(Num) + 1;
end;
//四舍五入
function MyRoundEx(aValue: double
aDigit: Integer): double;
var
dTmp,dAdd: double;
begin
dTmp:=Power(10,aDigit);
dAdd:= 0.00000001;
if aValue < 0 then
begin
aValue := aValue - dAdd;
Result := - MyRound2(Abs(aValue) * dTmp) / dTmp
end
else
begin
aValue := aValue + dAdd;
Result := MyRound2(aValue * dTmp ) / dTmp;
end;
end;
由于浮点型数值的特性,我自己去补充缺少了那个0.00000001
太低位的小数这个就无法解决了
一般的几个小数位数的四舍五入,用这个方法凑合用着
 
http://www.delphibbs.com/keylife/iblog_show.asp?xid=27702
我的笔记里面就有了! 哈
 
后退
顶部