.NETエンジニア・プログラマ向けの技術情報・業界ニュースをお届けします。

  1. FEnet.NETナビ
  2. .NETコラム
  3. プログラミング言語
  4. C#
  5. C#で2乗する方法は?|C#のMathライブラリを紹介!

C#で2乗する方法は?|C#のMathライブラリを紹介!

  • C#
  • プログラミング言語
公開日時:   更新日時:
C#で2乗する方法は?|C#のMathライブラリを紹介!
この記事でわかること
    基本情報技術者試験の試験対策はこちら>>


    システム
    エンジニア
    C#で2乗をする方法はありますか?

    プロジェクト
    マネージャー
    Mathライブラリを使用することで2乗を処理することができます。

    C#で2乗する方法は?

    C#で2乗の計算を行うには、C#のMathライブラリを利用します。この記事では、C#で2乗の計算を行う方法と、そのほかに3乗やn乗を行う方法を紹介し、またMathライブラリを用いてほかに出来ることを紹介していきます。

    C#で2乗を実践する方法を紹介

    実際のソースコードを用いて、C#で2乗する方法を紹介します。環境構築などはされている前提ですが、もしされていない場合は以下のリンクからVisual Studioをインストールし、プロジェクトを作成してください。

    2乗する方法

    今回は、SquareTesterというクラスの中で2乗の処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

    以下のコードを記述し、実行します。
    using System;

    public class SquareTester {
    static void Main() {
    for (int i = 1; i <= 8; i++) { Console.WriteLine(Math.Pow(i, 2)); } } }

    [出力] 1
    4
    9
    16
    25
    36
    49
    64

    やっていることは単純で、xのy乗を返してくれるMath.Pow(double x, double y)関数を用いて2乗の計算を行っています。iに1~8の値をfor文で代入し、第二引数に2を入れているので、1~8の2乗が返ってくる、というわけです。

    n乗する方法

    次に、2乗以外のプログラムも作ってみましょう。PowTesterというクラスの中でn乗処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

    以下のコードを記述し、実行します。
    using System;

    public class PowTester {
    static void Main() {
    int x = 2;
    Console.WriteLine(Math.Pow(x, 3));
    Console.WriteLine(Math.Pow(x, 4));

    x = 2;
    Console.WriteLine(Math.Pow(x, 0.5));
    }
    }

    [出力] 8
    16
    1.4142135623731

    このように、2の3乗や2の4乗、また4の0.5乗(つまり平方根、ルートをつけること)など、2乗以外の乗数も指定することが出来ます。返り値はdouble型ですので、整数として処理したい場合は気を付けましょう。

    活用例 : 二次方程式の解を求める

    与えられた数値の乗数を返す、Math.Pow関数の活用例のひとつを紹介します。二次方程式、ax^2 + bx + c = 0について、そのxを求める方法を考えます。

    この時、xについて以下の式が成り立ちます。
    x = (-b ± √b^2 - 4ac) / 2a
    恐らく小・中学校あたりで習った公式かと思いますが、今回はこれをC#で実際に解いてみましょう。

    QuadraticSolverというクラスの中で求める処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

    以下のコードを記述し、実行します。
    using System;

    public class Hello{
    static double x1(int a, int b, int c) {
    double inside_root = Math.Pow(b, 2) - 4 * a * c;
    double child = -b + Math.Pow(inside_root, 0.5);
    double x = child / (2.0 * a);
    return x;
    }

    static double x2(int a, int b, int c) {
    double inside_root = Math.Pow(b, 2) - 4 * a * c;
    double child = -b - Math.Pow(inside_root, 0.5);
    double x = child / (2.0 * a);
    return x;
    }

    static void Main() {
    int a = 1, b = -7, c = 6; // x^2 - 7x + 6 = 0 について解く.
    double ans1 = x1(a, b, c);
    double ans2 = x2(a, b, c);
    Console.WriteLine("x = {0}, {1}", ans1, ans2);
    }
    }

    [出力] x = 6, 1

    少々長いプログラムですが、難しいことはしていません。x1関数で分子の±が+のときを、x2関数で分子の±が-のときを処理しています。inside_root変数でrootの内部を計算し、childで分子、xが解を表しています。

    このように、算数・数学における複雑な計算もMath.Pow関数を用いることで、C#で書くことが出来るようになります。

    Mathクラスとは?便利な関数を紹介!

    C#には、Mathクラスというものが実装されています。このライブラリは、様々な数学に関する処理を用意したライブラリのようなクラスで、これを用いて2乗以外にも様々な計算を行うことが出来ます。

    ここでは、そんなMathライブラリの便利関数と使用例を紹介していきます。

    最大値・最小値

    MaxMinTesterというクラスの中で最大値・最小値の処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名は、そのファイル名に合わせてください。

    以下のコードを記述し、実行します。
    using System;

    public class MaxMinTester {
    static void Main() {
    int[] arr = new int[] {14, 3, 5, 6, 8};
    int max = 0, min = 100;
    for(int i = 0; i < 5; i++){ max = Math.Max(arr[i], max) ; min = Math.Min(arr[i], min) ; } Console.WriteLine("max is {0}, min is {1}", max, min); } }

    [出力] max is 14, min is 3

    Math.Max関数は二つの引数を比較して大きいほうを、Math.Min関数は二つの引数を比較して小さいほうを返します。for文の中でそれぞれmax, min変数に最大値・最小値を保存していくことで、配列の数値の最大値を求めることが出来ます。

    int max = 0, min = 100;
    としている初期化部分は、maxは「配列のどれかの値よりも小さい数値」、minは「配列のどれかの値よりも大きい数値」でないと最大値・最小値を求められないため、こうのようしています。

    例えばmin = 0としてfor文を行ってしまうと、最初に代入した0より小さい値が入ることができません。なので最小値が0と出力されてしまい、正しい結果が得られなくなってしまいます。

    三角関数

    TriangleTesterというクラスの中で三角関数処理を記述していきます。もしファイル名が違う場合は、C#のコード内のクラス名はそのファイル名に合わせてください。

    以下のコードを記述し、実行します。
    using System;

    public class TriangleTester {
    static void Main()
    {
    double angle1 = 0; // 0度
    double angle2 = Math.PI / 2; // 90度

    Console.WriteLine("Angle1 sin : {0}, cos : {1}, tan : {2}", Math.Sin(angle1), Math.Cos(angle1), Math.Tan(angle1));
    Console.WriteLine("Angle2 sin : {0}, cos : {1}, tan : {2}", Math.Sin(angle2), Math.Cos(angle2), Math.Tan(angle2));
    }
    }

    [出力] Angle1 sin : 0, cos : 1, tan : 0
    Angle2 sin : 1, cos : 6.123233995736766E-17, tan : 16331239353195370

    この通り、Mathクラスでは三角関数を計算することもできます。Math.PI / 2の精度が完璧ではなかったため、出力ではcos90°が0にならなかったり(ほぼ0ですが)、tan90°が存在していたりしています。

    Mathクラスの三角関数の引数は、弧度法でなくラジアンの角度であるため、angle°の三角関数が求めたければ、rad = angle / 180 * Math.PIといった風にラジアンに変換する必要があります。

    システム
    エンジニア
    2乗処理以外にも様々な計算処理ができるのですね。

    プロジェクト
    マネージャー
    そうですね。Mathクラスも使用して高度な計算処理を使いこなしていきましょう。

    C#の2乗処理を使って高度な計算を!

    この記事では、C#のMath.Pow関数を使って2乗処理を行う方法を紹介し、他にもn乗処理や2次方程式の解の公式の実装、またMathクラスに実装されている最大値・最小値処理や三角関数といった便利な処理を紹介しました。これらを用いて、高度な計算処理を記述していきましょう。

    FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
    株式会社オープンアップシステムロゴ

    株式会社オープンアップシステムはこんな会社です

    秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
    数多くのエンジニアが集まります。

    秋葉原オフィスイメージ
    • スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで

      スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。

    • 充実した研修制度

      充実した研修制度

      毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。

    • 資格取得を応援

      資格取得を応援

      スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。

    • 東証プライム上場企業グループ

      東証プライム上場企業グループ

      オープンアップシステムは東証プライム上場「株式会社夢真ビーネックスグループ」のグループ企業です。

      安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。

    株式会社オープンアップシステムに興味を持った方へ

    株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。

    年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
    まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。

    株式会社オープンアップシステムへのご応募はこちら↓
    株式会社オープンアップシステムへのご応募はこちら↓

    C#新着案件New Job