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になることです。これは、103がどちらも整数であるため、整数同士の割り算として扱われるからです。

掛け算の場合も、整数同士を掛け算すると整数の結果になります。

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

longintよりも大きな整数を扱えます。売上の合計、アクセス数、大量データの件数など、値が大きくなる可能性がある場合は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

この場合、105も整数なので、resultint型として扱われます。

一方、小数を含む場合は型が変わります。

C#
var result = 10 * 1.5;

Console.WriteLine(result);

実行結果は次のようになります。

C#
15

この場合、1.5double型として扱われるため、resultdouble型になります。

varは便利ですが、どの型になるかを理解して使うことが大切です。初心者のうちは、まずintdoubleを明示して書くと、型の違いを理解しやすくなります。

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.5doubleとして扱われます。

C#
float num = 1.5;

このコードはエラーになります。正しくは次のように書きます。

C#
float num = 1.5f;

floatdoubleよりも扱える精度が低いですが、メモリ使用量を抑えたい場面などで使われることがあります。一般的な小数計算では、まずdoubleを使うと考えてよいでしょう。

4-3. decimal型で金額計算をする

金額の計算では、decimal型がよく使われます。decimalは、doublefloatよりも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

decimalintを掛け算すると、結果はdecimalとして扱われます。

4-4. 小数の計算結果に誤差が出る理由

doublefloatで小数を掛け算すると、期待した値と少し違う結果になることがあります。

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を使います。小数を含む掛け算ではdoublefloat、金額計算ではdecimalを使うのが一般的です。

また、*=を使えば自分自身に掛け算した結果を代入できます。掛け算と足し算を組み合わせる場合は、演算子の優先順位や括弧による計算順序にも注意が必要です。

配列やリストの各要素を掛け算する場合は、for文やforeach文を使うと効率よく処理できます。

C#の掛け算は、プログラミングの中でも基本となる重要な処理です。まずは*を使った簡単な計算から試し、変数、小数、配列、ループへと少しずつ応用していきましょう。