コードは、.NET3.5 を対象とする VS2008 でコンパイルされています。これは私のシステムでは再現できません。ある種のローカリゼーション設定が機能していると思われますが、それについてはよくわかりません。
他のすべての有効な数値は正常に機能しているようです。バグは次のコードで示されています (同じ例外が発生しますが、製品コードではありません)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
string str = "";
do
{
str = Console.ReadLine();
Console.WriteLine("\t\"{0}\"", Convert.ToDouble(str));
}
while (str != null);
}
}
}
コマンド ラインで「0」を入力すると、少なくとも 1 つのシステムでアプリがクラッシュしました。
ユーザーの PC からのスタック トレース:
System.FormatException: Input string was not in a correct format.
at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal)
at System.Number.ParseDouble(String value, NumberStyles options, NumberFormatInfo numfmt)
at System.Double.Parse(String s, NumberStyles style, NumberFormatInfo info)
at System.Convert.ToDouble(String value)