德尔福:如何正确划分为浮点数

时间:2019-01-13 15:17:39

标签: delphi

使用Delphi Community IDE的第一天,我已经能够创建计算器应用程序。我主要完成了PythonR编程。

但是我在分区作战中遇到了麻烦。我已经硬编码2个值,以确保操作基于浮点数。

将5分为2时,我希望在面板标题中显示2.5

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'

这是根据其他条件进行操作的功能:

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;

1 个答案:

答案 0 :(得分:3)

iAns被声明为整数。并且整数类型的变量不能包含2.5之类的非整数值,而5 / 2.0就是这种整数。您需要改为使用浮点类型声明iAns,例如double(或realsingleextended:读取documentation关于这些)。

一些其他提示:

  • 5 / 25 / 2.0一样好,因为/运算符始终执行浮点除法。您将得到2.5
  • Delphi还具有整数除法运算符div5 div 2产生整数2

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