如何用科学记数法格式化数字

How to format a number in scientific notation

所以基本上我有这个功能 returns: 3.00000000000E000

function lang():extended;
begin
wynik := 0 ;
   counter := 1;
   temp :=1;
   input := 2;


   for i:= 1 to 4 do
       begin
       for k:= 1 to 4 do
       begin
       if i = k then counter := counter
       else temp := temp * ((input - a[k]) / (a[i] - a[k]));



       end;
       wynik := wynik + temp*f[i];

       temp := 1;
      end;
      Result := wynik;

end;            

但是当我尝试使用 FloatToStr 在应用程序屏幕上打印它时,我只得到 3。

procedure TFormCalculator.Button1Click(Sender: TObject);
begin
     Edit1.Text := FloatToStr(lang());
end;

如何保留长版本的结果?

您必须了解计算机不会将数字存储为字符串(文本)。在这种情况下,您正在使用 floating-point numbers。请阅读那篇维基百科文章。 (整数要简单得多。)

然后,每当显示一个数字时 on-screen,计算机子程序 会根据该数字创建一个字符串(文本)

所以你总是有相同的数字,但不同的系统从中创建不同的文本表示。

FloatToStr 将使用简单的默认数字格式。您想要使用 12 位的特定格式(称为“科学”或“指数”)。因此,您需要使用支持该功能的 float-to-string 例程:

Format('%.12e', [3.0], TFormatSettings.Invariant)

FormatFloat('0.00000000000E+000', 3.0, TFormatSettings.Invariant)

FloatToStrF(3.0, ffExponent, 12, 3, TFormatSettings.Invariant)

请阅读每个函数的文档: