我正在原型设计中如何处理F#数组中的Double.NaN值,并且第一步试图简单计算其中有多少个,这让我难住了。值“howMany”在我的代码中返回为零,但我知道有2个,因为我将2的值设置为Double.NaN。任何人都可以指出我缺少的东西吗?谢谢!F#如何计数列表中符合某些条件的元素数量?
let rnd = new System.Random()
let fakeAlphas = Array.init 10 (fun _ -> rnd.NextDouble());;
fakeAlphas.[0] <- Double.NaN;
fakeAlphas.[1] <- Double.NaN;
let countNA arr = arr |> Array.filter (fun x -> x = Double.NaN) |> Array.length;;
let howMany = countNA fakeAlphas;;
啊,_“请使用isNaN确定某个值是否不是数字是无法确定通过将其与另一个与NaN相等的值进行比较来确定值是否不是数字。“_〜http://msdn.microsoft.com/en-us/library/system.double.nan(VS.100).aspx – nlucaroni 2010-02-11 21:26:21
How关于'Double.IsNan'而不是'(fun x - > Double.IsNan x)'? – Cogwheel 2010-02-11 21:54:28
@Cogwheel:你说的对。匿名功能是不必要的。 – pblasucci 2010-02-11 23:00:59