var f:double;
f:=13867.385324; //这是日期只差,以天为单位
showmessage(floattostr(13867.385324*24*3600.0)); //这儿很奇怪,小数点怎么没了?出来的是整数正确的结果应该是:1198142091.9936 
可打印出来的是1198142092.
Double精度足够吧,可我即使声明成Extended也还是不行,郁闷中拜请大虾指点!

解决方案 »

  1.   

    在我的Delphi中,ShowMessage显示出来的是1198142091.9936哇。
      

  2.   

    i am so sorry,刚才有点着急,有点疏漏,重贴一遍var f:double; 
    f:=13867.385324; //这是日期只差,以天为单位 
    showmessage(floattostr(f*24*3600.0)); //计算出秒数。但这儿很奇怪,小数点怎么没了?出来的是整数 正确的结果应该是:1198142091.9936  
    可打印出来的是1198142092
    Double精度足够吧,可我即使声明成Extended也还是不行,郁闷中拜请大虾指点!
    感谢jadeluo!!!
      

  3.   

    这次各位大虾还能打印出1198142092来,那我只有fuck myself了!
      

  4.   

    浮点数确实存在一定的随机性
    比如说2,有的环境有时候是2.0000000000000001,也可能是1.9999999999999999999999999999999999浮点数用的时候如果要求精度,最好把小数位数规定死比如用 FormatFloat('0.00##', AValue)
       0和# 同样是占位符,但是是有区别的
       3.1110  在'0.####' 会成为 3.111 , 在'0.000'会成为 3.1110
    用如下的试试
    showmessage(FormatFloat('0.####',13867.385324*24*3600.0)); 比较两个浮点数相等用SameValue()
      

  5.   

    你还是fuck你自己吧,我照你之后贴出来的代码试过了,show出来的是
    1198142091.9936
      

  6.   

    show出来的是 1198142091.9936
    打印出来的也是 1198142091.9936LZ~~~~
      

  7.   

    我靠,我真疯了,你们这帮没人情味儿的!
    待会儿再fuck Myself or gf 
    先说这破事,我刚才贴的也是不完整的贴,就是图省事,现在贴完整的,我就不信了!var FirstTime,StandardTime:TDatetime;   FinalTicks :double;
    begin
    FirstTime := strtodatetime('2007-12-20 17:14:52');
    StandardTime:= strtodatetime('1970-01-01 08:00:00');
    FinalTicks := FirstTime-StandardTime;
    showmessage(floattostr(FinalTicks)); //正常
    showmessage(floattostr(FinalTicks*24*3600.0)); //error,小数没了!
    end;这是最后一次,哥们说到做到,你们再能显示小数,老子就Fucking Until Soft...
      

  8.   

    晕.I know了FinalTicks的值不是13867.385324而是13867.3853240741 !!!!
    所以FinalTicks*24*3600 = 1198142092.00000244
    所以小数被省略了,而不是象楼主以为的那样被四舍五入了.....
      

  9.   

    浮点数在计算机的存储是不精确的存储,比如1,在计算机中存储的可能是1.0000000001,也可能是0.9999999999等等.并不一定是精确的1.0000000000.
    用货币currency类型试试,如果数额不是很大的话。
      

  10.   

    FloatToStr忽略掉的FloatToStr还有个重载
    function FloatToStr(Value: Extended;
      const FormatSettings: TFormatSettings): string;可以设定需要的格式
      

  11.   

    并且
    FinalTicks的值不是13867.385324而是13867.3853240741 !!!! 
    --我怎么算不出这个13867.3853240741 ???!!!
    --delphi显示是13867.385324
      

  12.   

    调试器可能只显示6位小数吧.否则double型的经常xx.9999999999999999 怎么显示你用showmessage打出来的就是13867.3853240741 
      

  13.   

    问题出在 FloatToStr上面,该函数只保证15位有效位
    搂主可以用FormatFloat('0.0000000',FloatValue),'0'的个数随便搂主喜欢拉
      

  14.   

    http://www.japee.com.cn/jew/pages/Main.aspx