round 函数是银行用的 采用了 四舍六入5留偶
网上找到了个实现方法 先乘1000,用Trunc取整,除10取余,余数再取整,如果大于5,进位,小于5不进位。
函数就好写了 现在只写一个保留两个小数的例子 用到的可以扩展一下
/// <summary> /// 四舍五入 /// </summary> /// <param name="iValue">值</param> /// <returns>结果四舍五入保留两位小数</returns> function TfrmCaiGouhuajiadan.GetRound(iValue: double): Double; var iTemp: integer; iMod: Integer; begin //先乘1000,用Trunc取整,除10取余,余数再取整,如果大于5,进位,小于5不进位。 iTemp := Trunc(iValue * 1000); iMod := iTemp mod 10; if Trunc(iMod) >= 5 then Result := (Trunc(iValue * 100) + 1) / 100 else Result := Trunc(iValue * 100) / 100; end;