所以基本上我有这个返回的函数: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;
如何保留结果的长版本?
您必须了解计算机不会将数字存储为字符串(文本)。在这种情况下,您正在与浮点数字 https://en.wikipedia.org/wiki/Floating-point_arithmetic。请阅读维基百科文章。 (整数要简单得多。)
然后,每当屏幕上显示一个数字时,计算机子程序用该数字创建一个字符串(文本).
所以你总是有相同的数字,但不同的系统会根据它创建不同的文本表示。
FloatToStr http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.FloatToStr将使用简单的默认数字格式。您想要使用 12 位数字的特定格式(称为“科学”或“指数”)。因此,您需要使用支持以下功能的浮点到字符串例程:
Format('%.12e', [3.0], TFormatSettings.Invariant)
FormatFloat('0.00000000000E+000', 3.0, TFormatSettings.Invariant)
FloatToStrF(3.0, ffExponent, 12, 3, TFormatSettings.Invariant)
请阅读每个函数的文档:
- Format http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.Format
- FormatFloat http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.FormatFloat
- FloatToStrF http://docwiki.embarcadero.com/Libraries/en/System.SysUtils.FloatToStrF
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)