format('%2.0f',12.34)
'%2.0f'可以跟据需要修改.

解决方案 »

  1.   

    round本来是四舍五入的
    但是不知道为什么round(0.5)=0
    大概是bug
    trunc 是取整函数
      

  2.   

    你可以把round函数替换为:  function round_hss(const x:Extended):Extended;
      begin
        if x>=0 then
          result:=trunc(x+0.5)
        else
          result:=trunc(x-0.5);
      end;
      

  3.   

    Delphi6 中round 函数实现为:
    asm
            { ->    FST(0)  Extended argument       }
            { <-    EDX:EAX Result                  }        SUB     ESP,8
            FISTP   qword ptr [ESP]
            FWAIT
            POP     EAX
            POP     EDX
    end;这是因为 FISTP 执行四舍五入时是按RC场的值来决定的
        RC=00 向最近偶数取整
        RC=01 向下取整
        RC=10 向上取整
        RC=11 向零取整    发生以上错误只是由于这时 RC=00