delphi那些全都是所谓的银行家算法,都不是四舍五入。
偶自己写的,用字符串运算的
{-------------------------------------------------------------------------------
过程名: xRound1
作者: CurveSoft
日期: 2003.05.19
参数: Value: Extended; DataScale: integer
返回值: Extended
正确的四舍五入算法
由于Dephi的RoundTo,SimpleRoundTo,FormatFloat等函数使用所谓的“银行家”算法,
不符合我们的习惯,故编写此四舍五入算法,使用字符串进行四舍五入运算。
此处CPU消耗较大。
-------------------------------------------------------------------------------}
function xRound1(Value: Extended; DataScale: integer): Extended;
var
Sign, aPos: integer;
sValue: string;
begin
Sign := 1;
if Value < 0 then Sign := -1;
Value := Value * Sign;
Value := (Value * Power(10,DataScale)) + 0.5;
sValue := FloatToStr(Value);
aPos := Pos('.',sValue);
if aPos > 0 then sValue := Copy(sValue,1,aPos-1);
Value := StrToFloat(sValue);
Value := Value / Power(10,DataScale);
Value := Value * Sign;
Result:= Value;
end;