我有一个带有一些浮点数的输出txtfile,我喜欢用不同的格式打印,试试看:
FormatFloat('00000;000.0;00.00', val)
FormatFloat('00.00;000.0;00000', val)
但我输错了输出。我需要的是:
这是一个巨大的浮点值,所以,我需要一个低处理解决方案,我认为更多的条件将减慢应用程序。 ¿有什么建议吗?
谢谢
答案 0 :(得分:2)
使用条件测试将值排序为单独的输出不会以显着的方式影响性能。格式化过程要复杂得多。优化的一个重要事项是,只有在可以测量实际代码中的性能命中时,才能走这条路。
if (val < 10) then
s := FormatFloat('00.00',val)
else
if (val < 100) then
s := FormatFloat('000.0',val)
else
s := FormatFloat('00000',val);
另请考虑使用线程安全的FormatFloat和提供的FormatSettings
变量。
答案 1 :(得分:0)
我认为条件会更快地运行,但请考虑这个草图(关注超出范围的值):
const
FormatString: array[-1..2] of string = ('0.000', '0.00', '0.0', '0');
var
x: Double;
i: integer;
begin
x := 0.314;
for i := 1 to 4 do begin
Memo1.Lines.Add(FormatFloat(FormatString[Floor(Log10(x))], x));
x := x * 10;
end;
0.314
3.14
31.4
314