德尔福:如何正确除以浮点数



第一天使用Delphi社区IDE,我已经能够创建一个计算器应用程序。我主要做过PythonR编程。

但是我在师操作方面遇到了麻烦。我已经硬编码了 2 个值,只是为了确保操作基于浮点数。

我想在面板标题中得到2.5,当将 5 除以 2 时。

iAns := 5 / 2.0; yields:
[dcc32 Error] hello_world.pas(189): E2010 Incompatible types: 'Integer' and 'Extended'
[dcc32 Error] hello_world.pas(189): E2010 Incompatible types: 'Integer' and 'Extended'
[dcc32 Fatal Error] Project1.dpr(5): F2063 Could not compile used unit 'hello_world.pas'

这是根据 if else 条件执行操作的函数:

procedure TForm1.btnEqualsClick(Sender: TObject);
begin
iNum2 := StrToInt(edt1.Text);
edt1.Clear;
ShowMessage(IntToStr(iNum1));
ShowMessage(IntToStr(iNum2));
if Operant = '+' then
    begin
        iAns := iNum1 + iNum2;
        pnl1.Caption :=  IntToStr(iAns);
    end
else if Operant = '-' then
    begin
        iAns := iNum1 - iNum2;
        pnl1.Caption :=  IntToStr(iAns);
    end
else if Operant = '*' then
    begin
        iAns := iNum1 * iNum2;
        pnl1.Caption :=  IntToStr(iAns);
    end
else if Operant = '/' then
    begin
        iAns := 5 / 2.0;
        pnl1.Caption :=  FloatToStr(iAns);
    end
end;
end.

更新 1

var
  Form1: TForm1;
  iNum1, iNum2, iAns : Integer;
  rNum1, rNum2, rAns : Integer;
  Operant : String;

iAns声明为整数。而整数类型的变量不能容纳像2.5这样的非整数值,这就是你通过5 / 2.0得到的。您需要使用浮点类型声明iAns,例如double(或realsingleextended:阅读有关这些的文档)。

一些额外的提示:

  • 5 / 2工作原理和5 / 2.0一样好,因为/运算符总是执行浮点除法。你会得到2.5.
  • 德尔菲还有一个整数除法运算符,div5 div 2产生整数2

请注意编译器实际上已经告诉您这一点。它可能指向iAns := 5 / 2.0告诉您integeriAns的类型)与extended(右侧的类型)不兼容的行。

最新更新