首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >减少Delphi中的小数位数

减少Delphi中的小数位数
EN

Stack Overflow用户
提问于 2010-03-23 23:52:53
回答 3查看 7.3K关注 0票数 0

我将一个数字列表(双精度)存储在一个文本文件中,然后再次读出它们。

然而,当我从文本文件中读出它们时,这些数字被放入文本框中,例如1.59993499,而不是1.6。

代码语言:javascript
运行
复制
  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)?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-23 23:57:34

您可以使用FormatFloat函数

代码语言:javascript
运行
复制
var
  d: double;
begin
d:=1.59993499 ;
Edit1.Text:=FormatFloat('0.0',d); //show 1.6
end;
票数 4
EN

Stack Overflow用户

发布于 2010-03-23 23:56:48

对不起,我不确定它是否适合您的要求,但我最初的回答是使用:

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

票数 2
EN

Stack Overflow用户

发布于 2010-03-24 00:30:46

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

例如,假设您想要在程序中存储十分之一( 1.6),只需创建一个整数变量,并将其视为十分之一。当您要显示该值时,请使用以下命令:

代码语言:javascript
运行
复制
Format('%n',[SavedValue[1]/10]);

Currency是一个整数类型,隐含的小数位数为千分之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2501395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档