2009年12月5日土曜日

浮動小数点数型ではアンダーフローは0、オーバーフローは無限大となり、checkedキーワードを使用しても例外にならない。

using System;

class MainClass
{
    static void Main()
    {
        checked
        {
            double a = 1e200; // 1*(10の200乗)
            double b = 1e-200; // 1*(10の-200乗)
            Console.WriteLine("a="+a);
            Console.WriteLine("b="+b);
            /* 浮動小数点数型(float double)では
             * オーバーフロー例外はchecked文を使用しても
             * 検出できないので例外にならない */
            Console.WriteLine("b/a="+b/a); // 出力値:b/a=0
            Console.WriteLine("a/b="+a/b); // 出力値:a/b=+∞
            Console.WriteLine("-a/b=" + -a / b);// 出力値:-a/b=-∞
        }
    }
}

0 コメント:

コメントを投稿