减少Delphi中的小数位数

时间:2010-03-23 15:52:53

标签: delphi floating-point double

我将一个数字列表(如Double)存储在一个文本文件中,然后再将它们读出来。

当我从文本文件中读出它们时,数字会被放置在文本框中,例如1.59993499,而不是1.6。

  AssignFile(Pipe, 'EconomicData.data');
  Reset(Pipe);
  For i := 1 to 15
    Do ReadLn(Pipe, SavedValue[i]);
  CloseFile(Pipe);
  Edit1.Text := FloatToStr(SavedValue[1]);

上面代码中Edit1.text中的文本将是1.59999 ...而不是文本文件中的1.6。我怎样才能使文本框显示原始值(1.6)?

3 个答案:

答案 0 :(得分:4)

您可以使用FormatFloat功能

var
  d: double;
begin
d:=1.59993499 ;
Edit1.Text:=FormatFloat('0.0',d); //show 1.6
end;

答案 1 :(得分:2)

抱歉,我不确定它是否符合您的要求,但我原来的答案是使用:

Format('%n', [SavedValue[1]]);

答案 2 :(得分:1)

使用浮点时要小心。如果您要使用这些值执行计算,那么最好使用货币类型或整数,并在保存之前隐含小数点。正如您所注意到的,浮点值是近似值,并且最终会发生舍入误差。

例如,假设您想在程序中存储十分之一(1.6),只需创建一个整数变量,并且为了所有密集目的,将其视为十分之一。当您显示该值时,请使用以下内容:

Format('%n',[SavedValue[1]/10]);

Currency是一个整数类型,隐含的十进制小数。