我在ACCESS的数据库中有两个表,其中分别都有单精度格式的字段,我在两个窗口上用Stringgrid显示字段中的数据:
stringgrid1.Cells[13,2]:=adodataset1.fieldbyname('NAME').AsString ;
可奇怪的是,同样是0.78的数值,在一个表格里正常的显示为0.78,而在另一个里面显示成 0.77999997138977 ,为什么?百思不得其解啊。显示不正常的那个表格我用了ONDRAWCELL事件:
procedure TfUserInput.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
//浅蓝色为当前选择的行
if (acol=0) or (arow=0) then
exit;
if arow=nowrow then
self.StringGrid1.Canvas.Brush.Color :=clSkyBlue;
self.StringGrid1.Canvas.FillRect(rect);
self.StringGrid1.Canvas.TextOut(rect.Left ,rect.Top ,stringgrid1.Cells[acol,arow] );
end;
别的两个窗口代码几乎完全一样,可是为什么显示不同???
stringgrid1.Cells[13,2]:=adodataset1.fieldbyname('NAME').AsString ;
可奇怪的是,同样是0.78的数值,在一个表格里正常的显示为0.78,而在另一个里面显示成 0.77999997138977 ,为什么?百思不得其解啊。显示不正常的那个表格我用了ONDRAWCELL事件:
procedure TfUserInput.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
//浅蓝色为当前选择的行
if (acol=0) or (arow=0) then
exit;
if arow=nowrow then
self.StringGrid1.Canvas.Brush.Color :=clSkyBlue;
self.StringGrid1.Canvas.FillRect(rect);
self.StringGrid1.Canvas.TextOut(rect.Left ,rect.Top ,stringgrid1.Cells[acol,arow] );
end;
别的两个窗口代码几乎完全一样,可是为什么显示不同???
你可以这样写
FormatFloat('#0.00', adodataset1.fieldbyname('NAME').AsFloat); CSDN论坛浏览器:浏览、发帖、回复、结贴自动平均给分,下载地址:http://CoolSlob.ys168.com