M
mvb
Unregistered / Unconfirmed
GUEST, unregistred user!
为解决四舍五入的问题,自已写了一个函数。这是函数的源代码(Delphi7):
//aValue为9.825,aDigit为-2
function SelfDefRoundTo(aValue: Double; aDigit: TRoundToRange = 0): Double;
var
fPower: Double;
begin
fPower := Power(10, aDigit * -1);
//此时FPower为100
Result := aValue * fPower + 0.5;
//此时Result为983
Result := Trunc(Result);
//这里出问题了,Result变成了982?
Result := Result / fPower;
// 用下面这行代码一样的结果
// Result := SimpleRoundTo(aValue * fPower, 0) / fPower;
end;
请问这是什么原因,是因为CPU吗?我用的是AMD Athlon 1800+.
//aValue为9.825,aDigit为-2
function SelfDefRoundTo(aValue: Double; aDigit: TRoundToRange = 0): Double;
var
fPower: Double;
begin
fPower := Power(10, aDigit * -1);
//此时FPower为100
Result := aValue * fPower + 0.5;
//此时Result为983
Result := Trunc(Result);
//这里出问题了,Result变成了982?
Result := Result / fPower;
// 用下面这行代码一样的结果
// Result := SimpleRoundTo(aValue * fPower, 0) / fPower;
end;
请问这是什么原因,是因为CPU吗?我用的是AMD Athlon 1800+.