【发布时间】:2010-09-14 01:57:44
【问题描述】:
我的客户应用程序使用 writeln 和 readln 通过文本文件导出和导入大量 real 类型的变量。我试图增加所写字段的宽度,因此代码如下所示:
writeln(file, exportRealvalue:30); //using excess width of field
....
readln(file, importRealvalue);
当我导出然后再次导入和导出并比较文件时,我得到最后两位数字的差异,例如(这里的实际位数可能不正确,但你明白了):
-1.23456789012E-0002
-1.23456789034E-0002
这实际上对应用程序产生了影响,因此客户想知道我能做些什么。现在我不确定是否只有写入/读取才能做到这一点,但我想在我再次深入讨论堆栈之前我会提出一个快速的问题。我需要对此进行二进制处理吗?
这不是一个处理货币或其他东西的应用程序,我只是在文件中写入和读取值。我知道浮点数有时有点奇怪,我认为其中一个例程(writeln/readln)可能会发生一些有趣的事情。
【问题讨论】:
-
浮点数存在舍入问题。它是什么类型的应用程序,金融、科学等?有关更多信息,请参阅此线程:stackoverflow.com/questions/149033/…
标签: delphi floating-point text-files precision