2017-08-07 1 views
-11

私はいくつかの基本的なデータ型を扱っています。 私はユーザー入力データ型を見つける必要があります。C#int.TryParseとfloat.TryParseの両方が負の値を解析してtrueを返しました

私がint.TryParseとfloat.TryParseを使うときはいつでも、負の値を解析してtrueを返します。

これはバグですか?これは私が気付いていない基本的な機能です。

+3

これらは負の値を許可します。 – doctorlove

+4

これが意図されていない場合は、uintタイプ - 'uint.TryParse()'でミラー化されたバージョンを使用してみてください。 –

答えて

1

いいえ、これはバグではありません。 intfloatのデータ型は両方ともcan hold negative valuesなので、負の値を解析するとtrueが返されます。

+1

これは疑問に答えることはできますが、それが最初に提示された方法は非常に不明でした。いくつかのユーザーがこの回答の品質問題に関する旗を掲げました。私はそれらのフラグを却下し、おそらく最初のように見えるはずのものへのあなたの答えを編集しました。それはより明らかに質問に関係しています。うまくいけば、それは皆を満足させるでしょう、そして、あなたは将来の答えのモデルとしてこれを使うことができます。 –

+0

多くのありがとう、私は私のベストを尽くす – Noren

1

あなたがfloatのドキュメントを見れば、それは言う:

floatタイプは、7桁の精度で1038×約1.5×10-45から3.4までの範囲の値を表すことができます。 intのドキュメントを見て

を示しています:

intタイプは、それがdefinetelyであることを意味している-2147483648〜2147483647

間の値を持つ符号付き32ビット整数を表し、対応するTryParseメソッドでこの範囲内の負の数を解析することが可能です。これはバグではありません。

UINT型が0と4294967295

uint res; 
bool b = uint.TryParse("-7", out res); 

間の値を持つ符号なし32ビット整数falseもたらす表す:符号なし整数別名uint wheras

。値が範囲外であるため

関連する問題