2016年9月28日 星期三

「C#」NaN

NaN(Not a Number) 的意思為不是一個數字,

一開始我也覺得奇怪,為什麼運算過程中會出現NaN。

後來才發現在以下情況會出現NaN


(1) Math.Squrt(負數),例如Math.Sqrt(-1)


(2)Math.Pow(負數,0.5) ,例如Math.Pow(-1,0.5)


以下是一段範例程式,展示會產生出NaN的2種情況。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            double s=Math.Sqrt(-1);
            Console.WriteLine(s);
            
            double q=Math.Pow(-1,0.5);
            Console.WriteLine(q);
        }
    }
}


尤其要注意一件事,一個正常的數與NaN做計算時,亦會得到NaN

下面程式範例為1個NaN+10的情況,依然是NaN。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            double s=Math.Sqrt(-1);
            Console.WriteLine(s);
          
            double plus=s+10;
            Console.WriteLine(s);
        }
    }
}


沒有留言:

張貼留言