【C#】意外とミスが多い「割り算」

C#-隠れミスが多い?割り算の実装のキホン プログラミング・開発環境
スポンサーリンク

C#での割り算の方法について書いていきます。
C#なのでUnityでも使える知識です。
※プログラミング初心者向け(+最近やらかした自分への戒め)の記事です。

サンプル

割り算の記述例です。
計算式の右にあるコメントが計算結果です。
例としてfloat型にしていますがdoubleなど他の型でも考え方は同じです。

/*
 * ①商を求める
 */
float calc1 = 1 / 2;    // 0
float calc2 = 1f / 2f;  // 0.5
// 変数を使う場合
int x = 4;
int y = 10;
float calc3 = x / y;    // 0
// 両方に(float)をつけると「キャストが冗長です。」となる
float calc4 = (float)x / y; // 0.4
/*
 * ②余りを求める
 */
float calc5 = 1 % 2;    // 1

解説

①商を求める

割り算の商を求める場合は「/」を使います。

ここでよくやりがちなミスがあります。
整数同士で割り算をした時、計算式にキャストを明示的に書いていない場合は計算結果が整数で取得されます。
キャストしていない場合、サンプルのように「1÷2=0」という結果になってしまいます。
これは明示的にキャストすることで回避できます。
計算式に直接数字を記述している場合は「1f」のように接尾辞をつけてあげます
変数を使って計算している場合は、変数の前に(float)のように記述すればOKです

ちなみに上記は「整数同士の割り算」の場合なので、計算式にfloat型やdouble型が含まれている場合はキャストしなくてもちゃんと小数値まで取得できます
エラーにならないため見落としやすいので注意しましょう。

②余りを求める

割り算の余りを求める場合は「%」を使います。

余りの使いどころですが、パッと思いつくのは「○の倍数を判定する」とか「奇数偶数」ですかね。
あとは「時間の計算」とか。
下記はxが偶数だった場合にif文の処理を実行する例です。

if (x % 2 == 0)
{
    // 処理
}

まとめ

・商を求めるには「/」を使う
・余りを求めるには「%」を使う
・整数同士の計算で小数値が欲しい場合は明示的なキャストが必要

超基本ではあるのですがコンパイルエラーになったりはしないので、気を付けてないと「ありえない計算結果のまま進めてた」なんてことになったりします。
(数字を直接書いて計算するなんてことはあまりやらない気がするので、あるとしたらint型の変数で計算した時くらいだと思いますが)

コメント

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