Delphi 格式浮动

Delphi FormatFloat

我有一个带有一些浮点数的输出 txt 文件,我喜欢以不同的格式打印,你试试:

FormatFloat('00000;000.0;00.00', val)  
FormatFloat('00.00;000.0;00000', val)  

但是我输出错误。我需要的是:

这是大量的浮点值,因此,我需要一个低处理解决方案,我认为更多的条件会降低应用程序的速度。 ¿有什么建议吗?

谢谢

使用条件测试将值分类为单独的输出不会对性能产生重大影响。格式化过程要复杂得多。关于优化的一件重要事情是,只有在您可以衡量实际代码中的性能影响时才走那条路。

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 变量。

我想条件语句会工作得更快,但考虑一下这个草图(关心超出范围的值):

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