一開始我也覺得奇怪,為什麼運算過程中會出現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); } } }
沒有留言:
張貼留言