ShowMessage(floatToStr(SecondSpan(StrToDateTime('2003-10-11 10:00:00'),StrToDateTime('2003-10-11 9:00:00'))));
应该计算显示结果为3600,但程序显示为3599.999974,why???怎么避免啊?

解决方案 »

  1.   

    好好
    你取整数啊
    用copy取四位有效
    你的secondspan是不是自己做的函数
    而且还是fload类型的?
      

  2.   

    SecondSpan是delphi里的函数,做时间相差运算;其中ShowMessage(floatToStr(SecondSpan(StrToDateTime('2003-10-11',StrToDateTime('2003-10-11')));和ShowMessage(floatToStr(SecondSpan(StrToDateTime('10:00:00'),StrToDateTime('9:00:00'))));的结果是对的,但
    ShowMessage(floatToStr(SecondSpan(StrToDateTime('2003-10-11 10:00:00'),StrToDateTime('2003-10-11 9:00:00'))));算出来的结果是3599.999974,理应是3600的,why?怎么解决呢?
      

  3.   

    时间在电脑里面用浮点型描述的,
    本来就不是很准的。如果要用非常准的方法计算,
    不如用VARCHAR保存数据,
    然后专门写几个函数去计算是最好的。
      

  4.   

    因为 FloatToStr 的参数是 Extended 类型,而 SecondSpan 的返回值是 Double 类型。
    用 FloatToStrF 转换,可以得到希望的结果。
      

  5.   

    尽可能的变成整形  ShowMessage(IntToStr(round((StrToDateTime('2003-10-11 10:00:00') - StrToDateTime('2003-10-11 9:00:01'))*24*60*60)));