なんでこんな簡単なことにハマったのでしょう?
私と同じようにハマって時間を無駄にする方がいないように備忘録
下記は当然の如く0.25と出ると思っていましたが...
var rate: Double = 0.0
rate = 1 / 4
Log.v("TEST:", "rate:${rate}")
下記のようなコンパイルエラーがでる。
Type mismatch: inferred type is Int but Double was expected
google翻訳様:「型が一致しません:推定型はIntですがDoubleが必要です」
そんなことわかっておるワイ!!!
ん? あっ Σ(゚д゚;) ,,,, そういう事か。
IntとIntの計算なので計算結果の型の判定がIntになっていたんですね...
俺よ、なぜ気づかなかった。。。
ということで解決策。どっちか、もしくは両方をDoubleに合わせてやればよい。
val num1 = 1.toDouble()
val num2 = 4.toDouble()
val aaa = num1 / num2
Log.v("TEST:", "rate = ${aaa}")
V/TEST:: rate = 0.25
はい。想定どおりの結果が返ってきました。
自分の頭の悪さに涙が止まらんです。
補足
ちなみに...
val aaa = (1/4).toDouble()
Log.v("TEST:", "rate = ${aaa}")
V/TEST:: rate = 0.0
こうすると 計算結果がIntで来てそれをDoubleに変換しているみたいになるから
想定する結果が返ってきません。
10 / 4
とかだと 2.0
になるから注意。
では、よい kotlin 生活を!