软件使用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);
就能实现类似双精度的自动小数点位数显示。但数值的总长度固定