System.FormatException при разборе String для удвоения - PullRequest
0 голосов
/ 29 января 2019

Код отлично работал в Unity.Теперь я использую тот же код в консольном проекте и получаю System.FormatException исключение.

Код:

private double ConvertToNumber(string number)
        {      
            return double.Parse(number, numberStyle);
        }

параметр при вызове:

number = "3.138924e-002"
numberStyle = NumberStyles.AllowExponent | NumberStyles.AllowDecimalPoint | NumberStyles.AllowLeadingSign

Кто-нибудь видит ошибку или знает, что может вызвать это?

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Исключение выдается, потому что указанная вами строка не может быть преобразована в число с использованием указанного вами формата и вашего текущего cultrue .Последнее не имеет значения, если вы не укажете его.

Если вы читаете это значение из базы данных, вам следует использовать инвариантную культуру (то есть культуру, предназначенную для согласованного сохранения чисел и дат в любом месте, где вам нужно)., кроме пользовательских интерфейсов).

Ваш код становится:

return double.Parse(number, numberStyle, System.Globalization.CultureInfo.InvariantCulture);

Вместо этого, если вам нужна конкретная культура, вам нужно передать правильную культуру вместо инвариантной.

0 голосов
/ 29 января 2019

@ Селвин был прав насчет CultureInfo.InvariantCulture добавление его в качестве параметра исправило ошибку.

return double.Parse(number, numberStyle, CultureInfo.InvariantCulture);
...