2017-01-30 5 views
-1

По какой-то причине это один конкретный double.TryParse() У меня в моем коде возвращается 0 вместо ожидаемого результата.Double.TryParse не возвращает правильный результат

double parsedMultiplier; 
double.TryParse(multiplier, NumberStyles.Number, CultureInfo.InvariantCulture, out parsedMultiplier); 

multiplier устанавливается выше этого кодового фрагмента и является строкой. Я передал его «5» и «86» (как строки), и он возвращает 0. Я положил double.Parse(multiplier) в окно просмотра Visual Studio, и он правильно разрешает номер. Когда я изменил код следующим образом:

var parsedMultiplier = double.Parse(multiplier); 

Он возвращает 0 вместо правильного номера. Не уверен, что здесь происходит. Есть идеи?

+0

Вы уверены, что переменная не получает оптимизированными? Если вы напечатаете 'parsedMultiplier' после, дает ли он вам правильное значение? – clcto

+0

Huh. Вывод его на консоль затем заставляет его работать, хотя при проверке элемента по-прежнему отображается 0 в Visual Studio. Странная ошибка? – Anders

+0

Нет, похоже, вы строите релиз, чтобы он мог оптимизировать определенный код. Вероятно, он сохраняет ценность в регистре, которую визуальная студия не может проверить, просто догадываясь. – clcto

ответ

0

Я думаю, проблема здесь в multiplier строка может содержать некоторые нецифровые символы, такие как unicode 'zero wide space' не могли бы вы проверить, что double.TryParse возвращает это true или false? также вы могли бы разместить значение multiplier, которое закодировано, чтобы мы могли проверить, какие символы. Пожалуйста, пост hexEncoded

код:

string hexEncoded = string.Join("", multiplier.Select(c => ((int)c).ToString("X2"))); 
+0

По какой-то причине проверка кода давала мне 0, но когда I Console.WriteLine переменная, она правильно решает. Я собираюсь записать это как странную странность. По вашему запросу: TryParse Result => True; Hex Result => 35; Parsed Result => 5 – Anders

+0

Эти значения выглядят хорошо. Так что, возможно, это может быть сбой отладчика в конце концов. или, может быть, у вас может быть другой ввод во время этого сеанса отладки –

Смежные вопросы