2017-01-30 12 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

ハァッ。 Visual Studioで要素を検査しても0が表示されているにもかかわらず、コンソールで出力すると機能します。奇妙なバグ? – Anders

+0

いいえ、あなたが特定のコードを最適化できるように、リリースでビルドしているようです。おそらく、ビジュアルスタジオが検査することができない、単に推測するレジスタに値を保持している可能性があります。 – clcto

答えて

0

ここで問題はmultiplier文字列で、ユニコード 'ゼロワイドスペース'のような非数値文字を持つ可能性があると思います double.TryParseが返すのは本当ですか、偽ですか? multiplierの値を投稿して、文字が何であるかを確認することもできます。投稿してくださいhexEncoded

コード:

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

何らかの理由で、コードを検査すると私に0が与えられましたが、私はConsole.WriteLineで変数が正しく解決されました。私はこれを奇妙な奇妙なものとしてチョークするつもりです。リクエストごとに:TryParse Result => True; 16進数Result => 35;解析結果=> 5 – Anders

+0

これらの値は良好です。結局のところ、デバッガの不具合かもしれない。または、デバッグセッション中に別の入力を持つ可能性があります –

関連する問題