コンテンツへスキップ

【C# の基本】レッスン2:② 整数型、浮動小数点型、decimal 型


概要

レッスン2で学ぶ値型の変数の種類は以下の通りです。このページでは、整数型、浮動小数点型、decimal 型について学習します。

値型の変数型の名前範囲サイズ(bit)
整数型byte(sbyte)
short(ushort)
int(uint)
long(ulong)
0 ~ 255(-128 ~ 127)
-32,768 ~ 32,767(0 ~ 65,535)
-2,147,483,648 ~ 2,147,483,647(0 ~ 4,294,967,295)
-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807(0 ~ 18,446,744,073,709,551,615)
8
16
32
64
浮動小数点型float
double
±1.5 x 10−45 から ±3.4 x 1038
±5.0 × 10−324 – ±1.7 × 10308
32
64
decimal 型decimal
±1.0 x 10-28 から ±7.9228 x 1028
128
文字型charシングルクォーテーションで囲まれた1文字を格納する16
論理型boolブール値 (true または false のいずれか)8

下表のように変数の型には、別名があります。それぞれの型が扱える値の範囲は決まっています。適切な型を使えるようになりましょう。

値型の変数型の名前別名接尾辞
整数型byte(sbyte)
short(ushort)
int(uint)
long(ulong)
System.Byte(SByte)
System.Int16(UInt16)
System.Int32(UInt32)
System.Int64(UInt64)
– ( – )
– ( – )
– ( u / U )
l / L ( ul / UL )
浮動小数点型float
double
System.Single
System.Double
f / F
d / D
decimal 型decimalSystem.Decimalm / M

接尾辞とは、数値の末尾につけて型を指定するために使います。var は、右辺の値から型を推測させる「型推論」のためのキーワードです。

var a = 100; // int 型
var b = 100L; // long 型

STEP1:プログラムを記述する

Lesson2_2.cs のプログラムを下記のように変更します。

namespace Lesson2
{
    public class Lesson2_2
    {
        /// <summary>
        /// (1). 型を明示的に指定する方法(整数型)
        /// </summary>
        public static void Text1()
        {
            int a = 1000;
            int b = 100;
            int sum = a + b;
            Console.WriteLine("(1). 整数型 の足し算(1000 + 100):" + sum);
            Console.WriteLine("sum の型の名前:" + sum.GetType());
            Console.WriteLine("");
        }

        /// <summary>
        /// (2). 型推論(var)を使って、右辺の値から型を推測させる方法
        ///  楽だが、右辺の型が不明のとき(例:sum.GetType())は左辺の型も分かりづらくなる
        /// </summary>
        public static void Text2()
        {
            var a = 1000;
            var b = 100;
            var sum = a + b;
            Console.WriteLine("(2). 型推論 の足し算(1000 + 100):" + sum);
            Console.WriteLine("sum の型の名前:" + sum.GetType());
            Console.WriteLine("");
        }

        /// <summary>
        /// (3). 型を明示的に指定する方法(浮動小数点型)
        /// </summary>
        public static void Text3()
        {
            float a = 1000;
            float b = 100;
            var sum = a + b;
            Console.WriteLine("(3). 浮動小数点型 の足し算(1000 + 100):" + sum);
            Console.WriteLine("sum の型の名前:" + sum.GetType());
            Console.WriteLine("");
        }

        /// <summary>
        /// (4). 型推論(var)を使う場合で型を指定したい場合は、右辺の値を接尾辞を使って型を指定する必要がある
        /// </summary>
        public static void Text4()
        {
            var a = 1000d;
            var b = 100d;
            var sum = a + b;
            Console.WriteLine("(4). 型推論 の足し算(1000d + 100d):" + sum);
            Console.WriteLine("sum の型の名前:" + sum.GetType());
            Console.WriteLine("");
        }

        /// <summary>
        /// (5). 型が違う場合の演算(足し算)
        /// </summary>
        public static void Text5()
        {
            int a = 1000;
            decimal b = 100;
            var sum = a + b;
            Console.WriteLine("(5). 型が違う場合の足し算(int 型 + dicimal 型):" + sum);
            Console.WriteLine("sum の型の名前:" + sum.GetType());
            Console.WriteLine("");
        }

        /// <summary>
        /// 課題(1). 浮動小数点の計算は誤差が発生する(例1)
        /// </summary>
        public static void Kadai1()
        {
            int price = 2000;
            double rate = 0.1f;
            Console.WriteLine("課題1:浮動小数点の計算");
            Console.WriteLine("{0} * {1} = {2}", price, rate, price * rate);
            Console.WriteLine("");
        }

        /// <summary>
        /// 課題(2). 浮動小数点の計算は誤差が発生する(例2)
        /// </summary>
        public static void Kadai2()
        {
            double a = 0.1;
            double b = 0.2;
            Console.WriteLine("課題2:浮動小数点の計算");
            Console.WriteLine("{0} + {1} = {2}", a, b, a + b);
            Console.WriteLine("{0} + {1} == 0.3 ⇒ {2}", a, b, a + b == 0.3);
            Console.WriteLine("");
        }

        /// <summary>
        /// 課題(3). decimal 型を使って解決する
        /// </summary>
        public static void Kadai3()
        {
            int price = 2000;
            decimal rate = 0.1M;
            Console.WriteLine("課題3:浮動小数点の計算");
            Console.WriteLine("{0} * {1} = {2}", price, rate, price * rate);
            Console.WriteLine("");
        }
    }
}

Program.cs のファイルの中身を下記に置き換えます。

namespace Lesson2
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Lesson2_1.Text1();
            Lesson2_2.Text1();
            Lesson2_2.Text2();
            Lesson2_2.Text3();
            Lesson2_2.Text4();
            Lesson2_2.Text5();

            Lesson2_2.Kadai1();
            Lesson2_2.Kadai2();
            Lesson2_2.Kadai3();
        }
    }
}

STEP2:動作を確認する

色々なパターンで足し算をしています。どのような結果になったかひとつずつ確認してみてください。その際に、Visual Studio のデバッグ実行を活用して変数の型についても調べてみてください(下表の右側「種類」)。

2

次に進む

整数型、浮動小数点型、decimal 型について学びました。次は、文字型(char)と論理型(bool)について学習します。