dartの数値型でハマったのでまとめておく

はじめに

数値型でハマったのでまとめておきます。
dartの数値型はint,double,numという3種類の型が存在します。
この3種類の型が存在することを意識できておらず演算処理を行なった際に苦労しました。

エラーとしては以下のようなエラーメッセージが出てきました。

A value of type 'double' can't be assigned to a variable of type 'int'.

詳細

以下例ではint型の変数iに4/2というdouble型を代入しているためエラーとなります。

void main() {
  int i;
  
  i = 4/2;  //エラー発生

}

解決策としてはキャストするもしくは、~をつける必要があります。

void main() {
  int i;
  
  i = (4/2).toInt();  //OK
  i = 4~/2;  //OK
  
}

次は、mathというライブラリを使用した場合です。
3の2乗をdouble型の変数jに代入したかったのですが、こちらもエラーになります。

import 'dart:math';

void main() {
  double j;
  
  j = pow(3,2);  //エラー発生
}

pow関数の戻り値はnum型であるため、キャストが必要になります。
num型はint型またはdouble型どちらも定義可能となっていたため、暗黙的にキャストされると思ってましたが、明示的にキャストをしなければならないです。

import 'dart:math';

void main() {
  double j;
  
  k = pow(3,2).toDouble();  //OK
  
}

コメント

タイトルとURLをコピーしました