我将一个数字列表(双精度)存储在一个文本文件中,然后再次读出它们。
然而,当我从文本文件中读出它们时,这些数字被放入文本框中,例如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)?
发布于 2010-03-23 23:57:34
您可以使用FormatFloat函数
var
d: double;
begin
d:=1.59993499 ;
Edit1.Text:=FormatFloat('0.0',d); //show 1.6
end;发布于 2010-03-23 23:56:48
对不起,我不确定它是否适合您的要求,但我最初的回答是使用:
Format('%n', [SavedValue[1]]);
发布于 2010-03-24 00:30:46
只是在使用浮点时要小心。如果您要使用这些值执行计算,则最好使用货币类型或整数,并在保存之前隐含小数点。正如您已经注意到的,浮点值是近似值,舍入误差最终必然会发生。
例如,假设您想要在程序中存储十分之一( 1.6),只需创建一个整数变量,并将其视为十分之一。当您要显示该值时,请使用以下命令:
Format('%n',[SavedValue[1]/10]);Currency是一个整数类型,隐含的小数位数为千分之一。
https://stackoverflow.com/questions/2501395
复制相似问题