はじめてのDelphi(その2)

戻る

ここでは、VBC++BuilderDelphiの整数同士の除算の記述の違いを見てみます。

VBの場合

  • 整数同士の除算結果を整数に代入する場合、小数部を四捨五入します。

先頭へ


Private Sub Command1_Click()
  Dim iwork1 As Integer
  Dim iwork2 As Integer
  Dim iwork3 As Integer
  
  ' 整数同士の除算
  iwork1 = 3
  iwork2 = 2
  iwork3 = iwork1 / iwork2
  Call MsgBox(Str(iwork3))  ' 結果は"2"
End Sub



C++Builderの場合

  • 整数同士の除算結果を整数に代入する場合、小数部を切り捨てます。

先頭へ


//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  // 整数同士の除算
  int iwork1 = 3;
  int iwork2 = 2;
  int iwork3 = iwork1 / iwork2;
  ShowMessage( IntToStr( iwork3 ) );  // 結果は"1"
}
//---------------------------------------------------------------------------



Delphiの場合

  • 整数同士の除算結果を直接整数に代入することはできません。
    div 演算子を使用するか、Round(),Trunc()で変換して代入します。
  • Round()は小数部を四捨五入します。
  • Trunc()は小数部を切り捨てます。

先頭へ


procedure TForm1.Button1Click(Sender: TObject);
var
  iwork1: Integer;
  iwork2: Integer;
  iwork3: Integer;
begin
  // 整数同士の除算、divを使用
  iwork1 := 3;
  iwork2 := 2;
  //iwork3 := iwork1 / iwork2;  ←'Integer' と 'Real' には互換性がありません
  iwork3 := iwork1 div iwork2;
  ShowMessage( IntToStr( iwork3 ) );  // 結果は'1'

  // 整数同士の除算、Round()を使用
  iwork1 := 3;
  iwork2 := 2;
  iwork3 := Round(iwork1 / iwork2);
  ShowMessage( IntToStr( iwork3 ) );  // 結果は'2'

  // 整数同士の除算、Trunc()を使用
  iwork1 := 3;
  iwork2 := 2;
  iwork3 := Trunc(iwork1 / iwork2);
  ShowMessage( IntToStr( iwork3 ) );  // 結果は'1'

end;


 

先頭へ/戻る