C#における数値計算の基本
C#で数値データを扱う際、四則演算(足し算、引き算、掛け算、割り算)は最も基本的な操作の一つです。C#では、これらの計算を行うために「算術演算子」が用意されています。
この記事では、+(加算)、-(減算)、*(乗算)、/(除算)、および %(剰余)の各演算子の使い方と、特に注意すべき点について解説します。
加算演算子 +
+演算子は、2つの数値の和(足し算)を求めます。
using System;
public class AdditionExample
{
public static void Main()
{
int itemSubtotal = 4500; // 商品の小計
int shippingFee = 550; // 送料
// 小計と送料を足して、総額を計算
int totalCost = itemSubtotal + shippingFee;
Console.WriteLine($"商品の小計: {itemSubtotal}円");
Console.WriteLine($"送料: {shippingFee}円");
Console.WriteLine($"支払総額: {totalCost}円");
}
}
出力結果:
商品の小計: 4500円
送料: 550円
支払総額: 5050円
減算演算子 -
-演算子は、2つの数値の差(引き算)を求めます。
using System;
public class SubtractionExample
{
public static void Main()
{
int initialPoints = 10000; // 保有ポイント
int usedPoints = 3500; // 使用ポイント
// 保有ポイントから使用ポイントを引いて、残高を計算
int remainingPoints = initialPoints - usedPoints;
Console.WriteLine($"保有ポイント: {initialPoints}");
Console.WriteLine($"使用ポイント: {usedPoints}");
Console.WriteLine($"残りのポイント: {remainingPoints}");
}
}
出力結果:
保有ポイント: 10000
使用ポイント: 3500
残りのポイント: 6500
乗算演算子 *
*演算子は、2つの数値の積(掛け算)を求めます。
using System;
public class MultiplicationExample
{
public static void Main()
{
decimal unitPrice = 1980.5m; // 商品単価
int quantity = 3; // 数量
// 単価と数量を掛けて、合計金額を計算
decimal totalItemPrice = unitPrice * quantity;
Console.WriteLine($"単価: {unitPrice:C}"); // C: 通貨形式
Console.WriteLine($"数量: {quantity}");
Console.WriteLine($"合計金額: {totalItemPrice:C}");
}
}
出力結果:
単価: ¥1,980.5
数量: 3
合計金額: ¥5,941.5
除算演算子 /
/演算子は、最初の数値を2番目の数値で割った商(割り算)を求めます。除算は、計算に使用する数値の型によって結果が異なるため、特に注意が必要です。
整数同士の除算 (int / int)
int(整数)同士の除算では、結果もint(整数)となり、小数点以下の部分はすべて切り捨てられます。
using System;
public class IntegerDivisionExample
{
public static void Main()
{
int totalItems = 17; // 合計アイテム数
int itemsPerBox = 5; // 1箱あたりのアイテム数
// 17 ÷ 5 = 3.4 だが、整数同士の除算のため 3 となる
int fullBoxes = totalItems / itemsPerBox;
Console.WriteLine($"合計アイテム数: {totalItems}");
Console.WriteLine($"1箱あたり: {itemsPerBox}");
Console.WriteLine($"必要な箱の数 (切り捨て): {fullBoxes}");
}
}
出力結果:
合計アイテム数: 17
1箱あたり: 5
必要な箱の数 (切り捨て): 3
浮動小数点数を含む除算
小数点以下の結果を正確に得たい場合は、doubleやdecimalといった浮動小数点数型を使用します。計算に含まれる数値の少なくとも一方が浮動小数点数型であれば、結果も浮動小数点数型(doubleまたはdecimal)になります。
using System;
public class DoubleDivisionExample
{
public static void Main()
{
// 10.0 のように、意図的に double 型で記述
double totalScore = 10.0;
int count = 4;
// double / int の計算結果は double になる
double averageScore = totalScore / count; // 10.0 / 4 = 2.5
Console.WriteLine($"合計スコア: {totalScore}");
Console.WriteLine($"カウント: {count}");
Console.WriteLine($"平均スコア: {averageScore}");
}
}
出力結果:
合計スコア: 10
カウント: 4
平均スコア: 2.5
剰余演算子 %
%演算子は、最初の数値を2番目の数値で割ったときの**余り(剰余)**を求めます。
この演算子は、数値が偶数か奇数かを判定したり、特定の周期で何か(例: 梱包の端数)を計算したりする際に非常に便利です。
using System;
public class RemainderExample
{
public static void Main()
{
int totalItems = 17; // 合計アイテム数
int itemsPerBox = 5; // 1箱あたりのアイテム数
// 17 を 5 で割った余りを計算 (17 ÷ 5 = 3 余り 2)
int remainingItems = totalItems % itemsPerBox;
Console.WriteLine($"合計アイテム数: {totalItems}");
Console.WriteLine($"1箱あたり: {itemsPerBox}");
Console.WriteLine($"箱に入らない端数 (余り): {remainingItems}");
// 偶数・奇数の判定例
int checkNumber = 17;
if (checkNumber % 2 == 0)
{
Console.WriteLine($"{checkNumber} は偶数です。");
}
else
{
Console.WriteLine($"{checkNumber} は奇数です。");
}
}
}
出力結果:
合計アイテム数: 17
1箱あたり: 5
箱に入らない端数 (余り): 2
17 は奇数です。
演算子の優先順位
C#では、数学の計算ルールと同様に、演算子に優先順位があります。
- 高い:
*(乗算),/(除算),%(剰余) - 低い:
+(加算),-(減算)
*と/は、+や-よりも先に計算されます。意図した順序で計算を行うためには、括弧 () を使用して計算の順序を明示することが推奨されます。
// 括弧がない場合 (5 * 3 が先に計算される)
int result1 = 10 + 5 * 3; // 10 + 15 = 25
// 括弧がある場合 (10 + 5 が先に計算される)
int result2 = (10 + 5) * 3; // 15 * 3 = 45
まとめ
C#の算術演算子は、数値処理の基本です。特に除算(/)が整数同士の場合は結果が切り捨てられる点と、剰余(%)が余りを求める点を理解することが重要です。また、意図しない計算順序を防ぐために、括弧 () を適切に使用することが保守性の高いコードにつながります。
