C#の掛け算を初心者向けに解説|基本の書き方から小数・配列・よくあるエラーまで
はじめに
C#で計算処理を書くとき、掛け算はとてもよく使います。たとえば、商品の単価と個数から合計金額を求めたり、縦と横の長さから面積を計算したり、配列の中に入っている数値をまとめて処理したりする場面です。
C#の掛け算は、算数で使う「×」ではなく、半角のアスタリスク「*」を使って書きます。
C#Console.WriteLine(3 * 5);
このコードを実行すると、次のように表示されます。
C#15
この記事では、C#の掛け算について、基本の書き方から整数・小数・配列・ループでの使い方、初心者がつまずきやすいエラーまで順番に解説します。
1. C#の掛け算の基本
1-1. C#で掛け算に使う記号は「*」
C#で掛け算をするときは、半角記号の「*」を使います。
C#int result = 4 * 6;
Console.WriteLine(result);
実行結果は次のとおりです。
C#24
「*」は、C#では乗算演算子と呼ばれます。乗算とは、掛け算のことです。
C#int price = 100;
int count = 3;
int total = price * count;
Console.WriteLine(total);
実行結果は次のようになります。
C#300
この例では、priceが単価、countが個数です。price * countと書くことで、100円の商品を3個買ったときの合計金額を計算しています。
1-2. 「×」や「x」では掛け算できない理由
C#では、算数で使う「×」を掛け算の記号として使うことはできません。
C#int result = 4 × 6;
このように書くとエラーになります。C#の文法では、「×」は掛け算の演算子として定義されていないためです。
また、アルファベットの「x」も掛け算の記号としては使えません。
C#int result = 4 x 6;
これもエラーになります。C#では「x」はただの文字です。変数名として使うことはできますが、掛け算の記号にはなりません。
正しくは、必ず半角の「*」を使います。
C#int result = 4 * 6;
Console.WriteLine(result);
C#の掛け算では、「×」ではなく「*」を使うと覚えておきましょう。
1-3. 足し算・引き算・割り算との書き方の違い
C#では、四則演算を次のような記号で書きます。
C#Console.WriteLine(10 + 3); // 足し算
Console.WriteLine(10 - 3); // 引き算
Console.WriteLine(10 * 3); // 掛け算
Console.WriteLine(10 / 3); // 割り算
実行結果は次のようになります。
C#13
7
30
3
足し算は「+」、引き算は「-」、掛け算は「*」、割り算は「/」です。
ここで注意したいのは、10 / 3の結果が3になることです。これは、10と3がどちらも整数であるため、整数同士の割り算として扱われるからです。
掛け算の場合も、整数同士を掛け算すると整数の結果になります。
C#int result = 10 * 3;
Console.WriteLine(result);
実行結果は次のとおりです。
C#30
1-4. まずは1行で掛け算の結果を表示してみる
C#の掛け算を一番簡単に試すなら、Console.WriteLineの中に直接計算式を書きます。
C#Console.WriteLine(8 * 7);
実行結果は次のようになります。
C#56
Console.WriteLineは、画面に文字や数値を表示するための命令です。中に8 * 7と書くと、先に掛け算が計算され、その結果である56が表示されます。
文字と組み合わせて表示することもできます。
C#Console.WriteLine("8 × 7 の答えは " + (8 * 7) + " です。");
実行結果は次のようになります。
C#8 × 7 の答えは 56 です。
このように、C#の掛け算は*を使うだけで簡単に書けます。
2. C#で掛け算を書く基本パターン
2-1. 数値を直接掛け算する
数値をそのまま掛け算する場合は、次のように書きます。
C#Console.WriteLine(5 * 4);
実行結果は次のとおりです。
C#20
複数の計算を続けて書くこともできます。
C#Console.WriteLine(2 * 3);
Console.WriteLine(6 * 7);
Console.WriteLine(10 * 10);
実行結果は次のようになります。
C#6
42
100
プログラムの中で一度だけ使う簡単な計算であれば、数値を直接書いても問題ありません。
ただし、同じ値を何度も使う場合や、意味をわかりやすくしたい場合は、変数を使うのがおすすめです。
2-2. 変数同士を掛け算する
C#では、変数に入れた値同士を掛け算できます。
C#int width = 5;
int height = 8;
int area = width * height;
Console.WriteLine(area);
実行結果は次のとおりです。
C#40
この例では、widthが横の長さ、heightが縦の長さです。width * heightで面積を求めています。
変数を使うと、何を計算しているのかがわかりやすくなります。
C#int price = 120;
int quantity = 4;
int totalPrice = price * quantity;
Console.WriteLine(totalPrice);
実行結果は次のようになります。
C#480
120 * 4と直接書くよりも、price * quantityと書いたほうが、単価と数量を掛け算していることが伝わりやすくなります。
2-3. 変数と数値を掛け算する
変数と数値を掛け算することもできます。
C#int score = 10;
int doubleScore = score * 2;
Console.WriteLine(doubleScore);
実行結果は次のとおりです。
C#20
この例では、scoreの値を2倍しています。
次のように、消費税や割引率の計算でも使えます。
C#double price = 1000;
double taxIncluded = price * 1.1;
Console.WriteLine(taxIncluded);
実行結果は次のようになります。
C#1100
price * 1.1とすることで、価格に1.1を掛け、税込価格のような計算ができます。
2-4. Console.WriteLineで計算結果を表示する
掛け算の結果を確認したいときは、Console.WriteLineを使います。
C#int a = 6;
int b = 9;
Console.WriteLine(a * b);
実行結果は次のとおりです。
C#54
計算結果を変数に入れてから表示することもできます。
C#int a = 6;
int b = 9;
int result = a * b;
Console.WriteLine(result);
実行結果は同じです。
C#54
文字列補間を使うと、説明文と一緒に表示できます。
C#int a = 6;
int b = 9;
Console.WriteLine($"{a} と {b} の掛け算の結果は {a * b} です。");
実行結果は次のようになります。
C#6 と 9 の掛け算の結果は 54 です。
初心者のうちは、掛け算の結果が意図した通りになっているかをConsole.WriteLineでこまめに確認すると理解しやすくなります。
2-5. 複数の値を連続して掛け算する
C#では、3つ以上の値を連続して掛け算できます。
C#int result = 2 * 3 * 4;
Console.WriteLine(result);
実行結果は次のとおりです。
C#24
これは、次のように計算されます。
C#2 * 3 * 4
まず2 * 3が計算されて6になり、次に6 * 4が計算されて24になります。
変数を使って書くこともできます。
C#int length = 2;
int width = 3;
int height = 4;
int volume = length * width * height;
Console.WriteLine(volume);
実行結果は次のようになります。
C#24
この例では、縦・横・高さを掛け算して体積を求めています。
3. 整数の掛け算と型の扱い
3-1. int型で掛け算する基本例
C#で整数を扱うときによく使う型がintです。intは、小数点を含まない整数を入れるための型です。
C#int num1 = 12;
int num2 = 5;
int result = num1 * num2;
Console.WriteLine(result);
実行結果は次のとおりです。
C#60
int同士を掛け算すると、基本的にはintの結果になります。
C#int price = 300;
int count = 4;
int total = price * count;
Console.WriteLine(total);
実行結果は次のようになります。
C#1200
個数、点数、回数など、小数を使わない計算であれば、intを使うことが多いです。
3-2. 大きな数はlong型を使う
intには扱える範囲があります。非常に大きな数を掛け算すると、intでは範囲を超えてしまうことがあります。
大きな整数を扱いたい場合は、long型を使います。
C#long num1 = 1000000;
long num2 = 3000000;
long result = num1 * num2;
Console.WriteLine(result);
実行結果は次のようになります。
C#3000000000000
longはintよりも大きな整数を扱えます。売上の合計、アクセス数、大量データの件数など、値が大きくなる可能性がある場合はlongを検討しましょう。
数値リテラルにLを付けて、最初からlongとして扱うこともできます。
C#long result = 1000000L * 3000000L;
Console.WriteLine(result);
実行結果は次のとおりです。
C#3000000000000
3-3. 計算結果を別の変数に代入する
掛け算の結果は、別の変数に代入できます。
C#int price = 150;
int count = 6;
int total = price * count;
Console.WriteLine(total);
実行結果は次のとおりです。
C#900
このように、計算結果をtotalのような変数に入れておくと、後の処理で再利用できます。
C#int price = 150;
int count = 6;
int total = price * count;
int discountedTotal = total - 100;
Console.WriteLine(discountedTotal);
実行結果は次のようになります。
C#800
掛け算の結果をすぐに表示するだけでなく、別の計算に使う場面も多いです。
3-4. varを使った場合の型の決まり方
C#では、varを使って変数を宣言できます。
C#var result = 10 * 5;
Console.WriteLine(result);
実行結果は次のとおりです。
C#50
この場合、10も5も整数なので、resultはint型として扱われます。
一方、小数を含む場合は型が変わります。
C#var result = 10 * 1.5;
Console.WriteLine(result);
実行結果は次のようになります。
C#15
この場合、1.5はdouble型として扱われるため、resultもdouble型になります。
varは便利ですが、どの型になるかを理解して使うことが大切です。初心者のうちは、まずintやdoubleを明示して書くと、型の違いを理解しやすくなります。
3-5. オーバーフローが起きるケースに注意する
C#の掛け算では、計算結果が型の扱える範囲を超えると、オーバーフローが起きることがあります。
たとえば、intで非常に大きな数を掛け算すると、正しい結果にならない場合があります。
C#int num1 = 1000000;
int num2 = 3000000;
int result = num1 * num2;
Console.WriteLine(result);
本来の答えは3000000000000ですが、intでは大きすぎるため正しく扱えません。
このような場合は、longを使います。
C#long num1 = 1000000;
long num2 = 3000000;
long result = num1 * num2;
Console.WriteLine(result);
また、オーバーフローに気づきやすくしたい場合は、checkedを使う方法もあります。
C#checked
{
int num1 = 1000000;
int num2 = 3000000;
int result = num1 * num2;
Console.WriteLine(result);
}
checkedを使うと、範囲を超えた計算が行われたときに例外が発生します。大きな数を扱う可能性がある場合は、型の範囲に注意しましょう。
4. 小数を含む掛け算の書き方
4-1. double型で小数を掛け算する
C#で小数を扱うときによく使う型がdoubleです。
C#double width = 2.5;
double height = 4.0;
double area = width * height;
Console.WriteLine(area);
実行結果は次のとおりです。
C#10
doubleを使うと、小数を含む掛け算ができます。
C#double price = 980;
double taxRate = 1.1;
double total = price * taxRate;
Console.WriteLine(total);
実行結果は次のようになります。
C#1078
小数の倍率を掛けたいときは、doubleがよく使われます。
4-2. float型で掛け算する場合の注意点
floatも小数を扱える型です。ただし、floatの数値には末尾にfまたはFを付ける必要があります。
C#float num1 = 1.5f;
float num2 = 2.0f;
float result = num1 * num2;
Console.WriteLine(result);
実行結果は次のとおりです。
C#3
次のようにfを付けないと、1.5はdoubleとして扱われます。
C#float num = 1.5;
このコードはエラーになります。正しくは次のように書きます。
C#float num = 1.5f;
floatはdoubleよりも扱える精度が低いですが、メモリ使用量を抑えたい場面などで使われることがあります。一般的な小数計算では、まずdoubleを使うと考えてよいでしょう。
4-3. decimal型で金額計算をする
金額の計算では、decimal型がよく使われます。decimalは、doubleやfloatよりも10進数の計算に向いています。
C#decimal price = 1200m;
decimal taxRate = 1.1m;
decimal total = price * taxRate;
Console.WriteLine(total);
実行結果は次のとおりです。
C#1320.0
decimalの数値には、末尾にmまたはMを付けます。
C#decimal amount = 99.9m;
金額、料金、税率、請求額など、誤差をできるだけ避けたい計算ではdecimalを使うのが一般的です。
C#decimal unitPrice = 198.5m;
int quantity = 3;
decimal total = unitPrice * quantity;
Console.WriteLine(total);
実行結果は次のようになります。
C#595.5
decimalとintを掛け算すると、結果はdecimalとして扱われます。
4-4. 小数の計算結果に誤差が出る理由
doubleやfloatで小数を掛け算すると、期待した値と少し違う結果になることがあります。
C#double result = 0.1 * 3;
Console.WriteLine(result);
表示上は0.3に見えることもありますが、内部的にはぴったり0.3ではない場合があります。
これは、コンピューターが小数を2進数で扱っているためです。10進数では簡単に表せる0.1のような値でも、2進数では正確に表せないことがあります。
そのため、次のような比較には注意が必要です。
C#double result = 0.1 * 3;
if (result == 0.3)
{
Console.WriteLine("同じです");
}
else
{
Console.WriteLine("違います");
}
小数の計算では、わずかな誤差が出る可能性があることを覚えておきましょう。金額計算ではdecimalを使い、表示用には丸め処理を使うと安心です。
4-5. Math.Roundで掛け算結果を丸める方法
小数の掛け算結果を指定した桁数に丸めたいときは、Math.Roundを使います。
C#double price = 123.456;
double rate = 1.08;
double result = price * rate;
double rounded = Math.Round(result, 2);
Console.WriteLine(rounded);
この例では、掛け算の結果を小数第2位までに丸めています。
C#133.33
Math.Round(値, 桁数)の形で書きます。
C#double rounded = Math.Round(123.4567, 2);
Console.WriteLine(rounded);
実行結果は次のようになります。
C#123.46
金額計算でdecimalを使う場合も、Math.Roundを使えます。
C#decimal price = 123.456m;
decimal rate = 1.08m;
decimal result = price * rate;
decimal rounded = Math.Round(result, 2);
Console.WriteLine(rounded);
掛け算の結果を画面に表示するときや、必要な桁数に整えたいときに便利です。
5. 掛け算でよく使う応用表現
5-1. 「*=」を使って自分自身に掛け算する
C#では、変数自身に掛け算した結果を再代入する場合、*=を使えます。
C#int number = 5;
number *= 3;
Console.WriteLine(number);
実行結果は次のとおりです。
C#15
これは、次のコードと同じ意味です。
C#number = number * 3;
たとえば、ポイントを2倍にする処理は次のように書けます。
C#int point = 100;
point *= 2;
Console.WriteLine(point);
実行結果は次のようになります。
C#200
*=を使うと、変数の値を何倍かに変更する処理を短く書けます。
5-2. 掛け算と足し算を組み合わせる
C#では、掛け算と足し算を組み合わせて計算できます。
C#int result = 10 + 2 * 3;
Console.WriteLine(result);
実行結果は次のとおりです。
C#16
10 + 2 * 3は、左から順番に計算されるわけではありません。掛け算が足し算よりも先に計算されます。
つまり、次のように計算されます。
C#10 + (2 * 3)
そのため、結果は36ではなく16になります。
料金計算でもよく使います。
C#int basePrice = 500;
int itemPrice = 120;
int count = 3;
int total = basePrice + itemPrice * count;
Console.WriteLine(total);
実行結果は次のようになります。
C#860
この例では、itemPrice * countが先に計算され、その結果にbasePriceが足されます。
5-3. 括弧を使って計算順序を変える
計算の順序を変えたいときは、括弧を使います。
C#int result = (10 + 2) * 3;
Console.WriteLine(result);
実行結果は次のとおりです。
C#36
括弧がある場合、括弧の中が先に計算されます。
C#(10 + 2) * 3
まず10 + 2が計算されて12になり、その後12 * 3が計算されます。
掛け算と足し算を組み合わせるときは、意図した計算順序になっているかを確認しましょう。
C#int price = 100;
int count = 3;
int shippingFee = 500;
int total1 = price * count + shippingFee;
int total2 = price * (count + shippingFee);
Console.WriteLine(total1);
Console.WriteLine(total2);
実行結果は次のようになります。
C#800
50300
括弧の位置によって結果が大きく変わるため注意が必要です。
5-4. 演算子の優先順位を理解する
C#には、演算子の優先順位があります。掛け算の*は、足し算の+や引き算の-よりも優先順位が高いです。
C#int result = 5 + 4 * 2;
Console.WriteLine(result);
実行結果は次のとおりです。
C#13
4 * 2が先に計算され、その後に5が足されます。
割り算も掛け算と同じ優先順位です。
C#int result = 20 / 2 * 5;
Console.WriteLine(result);
実行結果は次のようになります。
C#50
掛け算と割り算のように、優先順位が同じ演算子は基本的に左から右へ計算されます。
ただし、コードを読む人にとってわかりやすくするために、必要に応じて括弧を付けるのがおすすめです。
C#int result = (20 / 2) * 5;
このように書くと、どの順番で計算したいのかが明確になります。
5-5. Math.Powとの違いを理解する
C#には、Math.Powというメソッドがあります。これは掛け算そのものではなく、累乗を計算するためのものです。
C#double result = Math.Pow(2, 3);
Console.WriteLine(result);
実行結果は次のとおりです。
C#8
Math.Pow(2, 3)は、2の3乗を意味します。
C#2 * 2 * 2
つまり、同じ数を指定した回数だけ掛ける計算です。
一方、通常の掛け算は*を使います。
C#int result = 2 * 3;
Console.WriteLine(result);
実行結果は次のとおりです。
C#6
2 * 3は「2かける3」ですが、Math.Pow(2, 3)は「2の3乗」です。意味が違うため、使い分けが必要です。
面積や合計金額のような普通の掛け算には*を使い、累乗を求めたいときにはMath.Powを使いましょう。
6. 配列・リスト・ループで掛け算する方法
6-1. 配列の各要素を掛け算する
C#では、配列に入っている数値をループで取り出して掛け算できます。
たとえば、配列の各要素を2倍にして表示する場合は、次のように書きます。
C#int[] numbers = { 1, 2, 3, 4, 5 };
foreach (int number in numbers)
{
Console.WriteLine(number * 2);
}
実行結果は次のとおりです。
C#2
4
6
8
10
foreachを使うと、配列の中身を1つずつ取り出せます。取り出した値をnumber * 2のように掛け算して表示しています。
配列の値そのものを変更したい場合は、for文を使うと便利です。
C#int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
numbers[i] *= 2;
}
foreach (int number in numbers)
{
Console.WriteLine(number);
}
実行結果は次のようになります。
C#2
4
6
8
10
numbers[i] *= 2;は、配列の各要素を2倍にして、元の配列に代入しています。
リストでも同じように掛け算できます。
C#List<int> numbers = new List<int> { 10, 20, 30 };
for (int i = 0; i < numbers.Count; i++)
{
numbers[i] *= 3;
}
foreach (int number in numbers)
{
Console.WriteLine(number);
}
実行結果は次のとおりです。
C#30
60
90
配列やリストを使った掛け算は、複数のデータをまとめて処理したいときに役立ちます。商品の価格をまとめて税込価格に変換したり、点数を一括で補正したりするような場面でよく使います。
まとめ
C#の掛け算では、半角のアスタリスク「*」を使います。算数で使う「×」やアルファベットの「x」では掛け算できないため注意しましょう。
基本的な書き方はとてもシンプルです。
C#int result = 3 * 5;
Console.WriteLine(result);
変数同士を掛け算したり、変数と数値を掛け算したり、複数の値を連続して掛け算したりすることもできます。
整数の掛け算ではintを使うことが多いですが、大きな数を扱う場合はlongを使います。小数を含む掛け算ではdoubleやfloat、金額計算ではdecimalを使うのが一般的です。
また、*=を使えば自分自身に掛け算した結果を代入できます。掛け算と足し算を組み合わせる場合は、演算子の優先順位や括弧による計算順序にも注意が必要です。
配列やリストの各要素を掛け算する場合は、for文やforeach文を使うと効率よく処理できます。
C#の掛け算は、プログラミングの中でも基本となる重要な処理です。まずは*を使った簡単な計算から試し、変数、小数、配列、ループへと少しずつ応用していきましょう。

