这不是bug,"在最近版本的Delphi Pascal 编译器中,Round 函数是以 CPU 的 FPU (浮点部件) 处理器为基础的。这种处理器采用了所谓的 "银行家舍入法",即对中间值 (如 5.5、6.5) 实施Round函数时,处理器根据小数点前数字的奇、偶性来确定舍入与否,如 5.5 Round 结果为 6,而 6.5 Round 结果也为6, 因为 6 是偶数"。<br><br>Round函数其实使用的银行家算法进行运算的,统计学上一般也是使用这种算法的,这比我们传统的四舍五入方法要科学<br>在math.pas中有下面的方法,也可以实现<br><br>TFPURoundingMode = (rmNearest, rmDown, rmUp, rmTruncate);<br>{ Return the current rounding mode }<br>function GetRoundMode: TFPURoundingMode;<br><br>{ Set the rounding mode and return the old mode }<br>function SetRoundMode(const RoundMode: TFPURoundingMode): TFPURoundingMode;<br><br>函数也可以这样写<br>function RoundEx(Value: Extended; RoundMode: TFPURoundingMode = rmUp): Int64;<br>var<br> RM: TFPURoundingMode;<br>begin<br> RM := GetRoundMode;<br> try<br> SetRoundMode(RoundMode);<br> Result := Round(Value);<br> finally<br> SetRoundMode(RM);<br> end;<br>end;