delphi里的四舍五入是跟其他的不一样,像a := 772.395,用RoundTo(a, 2)为772.39不是772.40,用FormatFloat('0.00', a)也是772.39,直接FormatFloat('0.00',772.395)到为772.40,这个问题谁有比较好的解决方案?

解决方案 »

  1.   

    http://dev.9983.com/ku/5308/4592417.asp
      

  2.   

    这是用的所谓“银行家舍入算法”,是符合IEEE754规范的。
    你要的那种传统的四舍五入可以用Set8087CW或者SetRoundMode过程来调整,或者使用楼上提供的链接中的一些实现方法。
      

  3.   

    用SimpleRoundTo先乘10 然后除10 看看
      

  4.   

    4舍6入5进双.delphi的浮点数是比较头疼的,
    round,roundto,simpleround,format,formatfloat  等等都会是遵循这个规律.最好的办法是在程序里每个数字都给一定的长度精度.
      

  5.   

    FormatFloat('0.00', StrToFloat(FloatToStr(a)));即可