(非数値)

CurrentCulture が ja の場合、double.NaN.ToString("g") の戻り値は "NaN (非数値)"、当然 double.NaN.Parse("NaN (非数値)") を ja でやると NaN が手に入る。
からして、double 値専用のエディット可能アップダウンボックスでは、日本語どころかすべての文字の入力を許可しているのだ。*1そして、日本語環境ではかならず "NaN (非数値)" って入力しないと NaN を指定できない。括弧は半角で書かないといけないし、N と ( の間には半角空白を忘れてはならない。なんて面倒なっ。

まあ、仕様設計のレベルで回避できるなら、数値の文字列化およびパース処理ぐらいは InvariantCulture でやるってルールにしておいたほうがいい気がする。その場合 "+Infinity", "-Infinity", "NaN" の3つのシンボルの扱いも決めておこう。*2

*1:PositiveInfinity は "+∞" の2文字を入力することで指定できる

*2:これらのシンボルは NumberFormatInfo.PositiveInfinitySymbol などで取得できる