Delphi浮点数显示精度问题

软件使用Access数据库,字段设置:数字->单精度,当界面表格显示时,采用赋值单元格形式。为下图所示

经过单步调试,发现 在从数据集中获取值(LTemp:= ADOTable1.FieldByName('Value1').AsFloat;)时便是如此 :数据库中值为10.1,获取时 LTemp为10.1000003814697

通过更改设置Access数据库,字段为:数字->双精度,当界面表格显示时,采用赋值单元格形式。为下图所示

显示浮点数精度问题主要是 Access字段类型设置问题,需要通过更改字段类型来解决。否则的话需要通过固定格式话解决,但此方法不能自动适应精度。

还有一种方法,就是对从Access数据库中字段获取的浮点数,进行长度固定(Access数据库自身界面显示就是如此)。代码如下:

function GetAutoSingle(AValue: Double): Double;

//Access 单精度字段按输入形式显示

const

CMaxSingleLen = 7;

var

LInt, LRoundLen: Integer;

LIntStr: string;

begin

LInt := Trunc(Int(AValue));

LIntStr := IntToStr(LInt);

LRoundLen := CMaxSingleLen - Length(LIntStr);

Result := RoundTo(AValue, -LRoundLen);

end;

按以下这样调用

Edit.Text:= GetAutoSingle(ADOTable1.FieldByName('Value1').AsFloat);

就能实现类似双精度的自动小数点位数显示。但数值的总长度固定

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值