Unityで割り算の答えを出すときの型について

intからfloatへ

この記事を三行にまとめると

C#さんが気を利かせてくれやがってしまう
こっちが空気を読んであげる必要がある
株式会社みたいなもんですね
UnityというよりはC#の話なんですけど、例えば正解率を出したいみたいな時はこんな感じの割り算で算出することになると思います。

float percent = 6 / 10 * 100

これは「10問中6問正解したので正解率は60%」みたいなイメージです。

普通に考えたらこれで「60」という答えが出るはずなんですけど、実際にやってみるとpercentの中身は0になります。

これは計算に使っている「6」「10」「100」が整数なのでC#さんが気を利かせて計算結果も整数型(int型)にしてくれやがってしまうんですね。

なのでこういう場合はC#さんが気を利かせないようにこっちが空気を読んであげる必要があるわけです。

float percent = 6f / 10f * 100f

数字の末尾に「f」をつけるとC#さんが「ああ、こいつらは見た目int型っぽいけど本当はfloat型なんだな」と察してくれます。

変数の場合は末尾に「f」をつけられないのでこんな書き方をすればOKです。

float percent = (float)correct / (float)count * 100f

変数の前に「(float)」をつければ変数をfloat型として扱ってくれます。株式会社みたいなもんですね。前フロってやつです。

0が出力されると「あれ? 変数に上手く値が入ってないのか?」と勘違いしてしまう可能性もあるかもしれませんが、そういう時は型に注目してみてください。

それにしてもC#って結構型にうるさいわりにこういう時だけ逆に柔軟にやってくれちゃうのね。ありがたいやらありがた迷惑やら……。
 もしかしたら何か関連しているかも? 
 みんなからのコメント 
まだコメントはいただけてないみたい……