[VB.NET] 文字列が数値であるかを評価する

2014年8月29日

 与えられた文字列が数値であるかどうかを判定するのに、型.TryParse() を使う方法がありますが、おなじ数値判定でも型によって結果が異なります。

' 数値判定
For Each x In {"100", "+0", "&HA", "-10.5", "5.", "10e+5", "+∞"}
    Dim value As Double
    Console.WriteLine("---- {0}", x)
    Console.WriteLine("Integer:{0}", Integer.TryParse(x, value))
    Console.WriteLine("Decimal:{0}", Decimal.TryParse(x, value))
    Console.WriteLine("Double :{0}", Double.TryParse(x, value))
Next

 結果

---- 100
Integer:True
Decimal:True
Double :True
---- +0
Integer:True
Decimal:True
Double :True
---- &HA
Integer:False
Decimal:False
Double :False
---- -10.5
Integer:False
Decimal:True
Double :True
---- 5.
Integer:False
Decimal:True
Double :True
---- 10e+5
Integer:False
Decimal:False
Double :True
---- +∞
Integer:False
Decimal:False
Double :True
  • 整数はどれも成功ます。
  • 符号つきの 0 も成功します。
  • 16進数表現は失敗します。
  • 小数点が入ると、整数型は Parse に失敗します。"5."のようにケースも不可です。
  • 指数表現と無限大は浮動小数点型のみ成功します。

 なので、文字列を数値として評価する場合、上記を考慮してどの型の Parse を使うかを検討するとよいかもしれません。(小数点を許容するが、指数表現は認めたくないなら、Decimal を使用するなど)






カテゴリー: Program, VB.NET

Follow comments via the RSS Feed | Leave a comment | Trackback URL

コメントを投稿する

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


«   »
 
Powered by Wordpress and MySQL. Theme by Shlomi Noach, openark.org