关于数据库中浮点运算、保留小数和时间计算

 

关于小数:

    1SQL数据表中使用numeric字段时(一定要注明小数位数),程序中使用:ADOQuery1.FieldByName('price').Value := RoundEx((ADOQuery1.FieldByName('price').AsFloat + strtofloat(Edit1.text)) * 1000) / 1000;或者ADOQuery1.FieldByName('price').Value:=adoquery1.FieldByName('price').AsFloat+strtofloat(edit1.Text);都可以保证数据计算的精度是准确值

2SQL数据表中使用float字段时,程序中使用ADOQuery1.FieldByName('price').Value := RoundEx((ADOQuery1.FieldByName('price').AsFloat + strtofloat(Edit1.text)) * 1000) / 1000;才可以保证精度;而使用:ADOQuery1.FieldByName('price').Value:=adoquery1.FieldByName('price').AsFloat+strtofloat(edit1.Text);就会出现浮点小数,使得计算结果不准确。

以上结果最多经过90000次循环测试。

关于次幂:

    Delphi中可以直接使用Power函数计算某个数的次幂,但是需要在Uses中加入uses math;函数用法:i:=Power(10,2);表示10的平方。

关于时间:

当要进行时间加减运算时,其计算结果是天为单位,如果需要换算成秒,则需要进行如下运算:

Edit6.Text:=floattostr(roundex((strtodatetime(edit5.Text)-strtodatetime(edit2.Text))*86400*100)/100);

注:(124小时,1小时60分钟,1分钟60秒,因此86400=24*60*60

 

转载于:https://www.cnblogs.com/bingege/archive/2011/08/21/2147959.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值