我的四舍五入解决方法,供大家参考和讨论
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
太低位的小数这个就无法解决了
一般的几个小数位数的四舍五入,用这个方法凑合用着