Научная нотация - ошибка в .NET? - PullRequest
2 голосов
/ 08 июня 2011

Да, я знаю, в это трудно поверить - ошибка в .NET?Но запустите этот код в приложении командной строки:

decimal x;

x = decimal.Parse("3.E-2", NumberStyles.Float);
Console.WriteLine(x);

x = decimal.Parse("5.72e9", NumberStyles.Float);
Console.WriteLine(x);

x = decimal.Parse("3.E−2", NumberStyles.Float);
Console.WriteLine(x);

Я получаю исключение во время последнего анализа.Говоря:

System.FormatException : Input string was not in a correct format.

Значения для первого и последнего разбора в точности совпадают.Протестировано на двух разных машинах x64, скомпилированных для .NET 3.5 и 4.

Есть идеи, что происходит?Любой обходной путь?

1 Ответ

24 голосов
/ 08 июня 2011

Первое и третье не совпадают.

в 3-м у вас есть знак "длиннее", в результате чего он не знает, что с ним делать. Поэтому вам необходимо проверить это и заменить его стандартным знаком минус

...