VB.NET数値チェック|VB.NET数値チェックの方法など紹介
- システム
エンジニア - 文字列を数値として扱いたい場合の方法について教えてください。
- プロジェクト
マネージャー - では、VB.NET数値チェックでの方法を見ていきましょう。
VB.NET数値チェックとは?
VB.NETでのプログラミングにおいて、テキストボックスからの入力値をデータベースに格納する場合や、固定長テキストから切り出した値を計算に用いる場合など、文字列を数値として扱いたい場面があります。
VB.NETは型の暗黙変換に比較的寛容な言語ですが、”abc”や”1億”など数値に暗黙変換できない値をいきなりそれらの用途に使用すると、データベースで格納エラーが発生したり、計算処理でエラーが発生したりします。
実際の処理に移る前に、与えられた値がその用途に使用できるのか判定するために行うのがVB.NET数値チェックになります。
VB.NET数値チェックの方法①
具体的なVB.NET数値チェックの方法としてはIsNumericという便利なメソッドを用いる方法があります。このメソッドは与えられた値がVB.NET数値型に変換可能かどうかを判断し、Bool型(True/False)で結果を返す仕様となっています。
実際のソースコードをみてみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim txt As String
txt = Me.TextBox1.Text
If IsNumeric(txt) Then
'##################################################
'## ここに数値だった場合の処理を記述します ##
'##################################################
MsgBox("数値です。", MsgBoxStyle.OkOnly)
Else
'##################################################
'## ここに数値でなかった場合の処理を記述します ##
'##################################################
MsgBox("数値ではありません。", MsgBoxStyle.OkOnly)
End If
End Sub
End Class
|
IsNumericメソッド使用上の注意点
ただしこのメソッドではあくまでも「VB.NET数値チェックの結果、数値である」こと、つまり「与えられた文字列がVB.NET数値型として認識できる」ということが判定されたに過ぎません。
文字列型変数である「txt」をそのままデータベースの数値型項目に登録したり、数値計算に使用できるということが約束されたわけではないことに注意が必要です。
というのも、IsNumericメソッドが数値と認識できる文字列は意外と幅広く、以下のような文字列を与えてもVB.NET数値チェック結果として”True”が返されます。従って実際の処理に使用するには、しかるべきVB.NET数値型変数に変換してあげる必要があります。
- “123,456.789”(カンマ付き)
- “-123,456.789″(符号付き)
- “¥123,456.789″(通貨記号付き)
- “123456.789e-10″(指数)
- “0000123456.789”(ゼロ埋め)
- ” 123456.789 “(空白埋め)
- “¥123,456.789ー”(全角)
VB.NET数値型とは?
VB.NET数値型にはその用途により様々なものが用意されています。以下に代表的なものを列挙します。
- Integer・・・整数型。連番や件数など、小数点のつかない数値を扱いたい場合に使用します。VB.NET数値型の中では最もパフォーマンスが良いとされています。
- Short・・・短整数型。整数型より小さい整数を扱いたい場合に使用します。
- Long・・・長整数型。整数型より大きな整数を扱いたい場合に使用します。
- Decimal・・・10進数型。金額や利率など、比較的大きな桁数の数値を誤差なく扱いたい場合に使用します。VB.NET数値型の中では最もパフォーマンスが悪いとされています。
- Double・・・倍精度浮動小数点数型。科学技術計算など、高精度かつ高速性が求められる場合に使用します。
- Single・・・単精度浮動小数点型。高速性は求められるけどDoubleほどの精度が必要ない場合に使用します。
IsNumericメソッドでは「これらのVB.NET数値型のうちのいずれかとして認識できる」と判定してくれるだけに過ぎません。
その数値が処理の中で必要とされる要件を満たすかどうかは、さらに詳しくVB.NET数値チェックを実施する必要があります。データベースに値を格納する場合など、VB.NETの世界から外に出ていく数値については特に注意が必要です。
VB.NET数値チェックの方法②
そこでもう一つのVB.NET数値チェックの方法として、「実際に型変換してみる」という方法をご紹介します。これは処理の中で必要とされる要件を満たすVB.NET数値型に型変換してみて、成功するか失敗するかを判定条件とする方法です。
実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim txt As String
Dim int As Integer
txt = Me.TextBox1.Text
If IsNumeric(txt) Then
Try
'##################################################
'## 実際に特定の数値型に変換します ##
'##################################################
int = CInt(txt)
Catch ex As Exception
'##################################################
'## ここに変換できなかった場合の処理を記述します ##
'##################################################
MsgBox("数値が大きすぎます。", MsgBoxStyle.OkOnly)
End Try
'##################################################
'## ここに変換できた場合の処理を記述します ##
'##################################################
MsgBox("整数に変換できました。", MsgBoxStyle.OkOnly)
Else
'##################################################
'## ここに数値でなかった場合の処理を記述します ##
'##################################################
MsgBox("数値ではありません。", MsgBoxStyle.OkOnly)
End If
End Sub
End Class
|
型変換を実施する箇所をTry…Catchで囲むことにより、Catch以下に型変換に失敗した場合の処理を、End Try以下に型変換に成功した場合の後続処理を記述することができます。
- システム
エンジニア - チェックするだけでなく、変換できるかも確認できるんですね。
- プロジェクト
マネージャー - やや複雑ではありますが、マスターすれば実際の現場でも役立ちます。ぜひマスターしてください。
VB.NET数値チェックまとめ
以上、VB.NET数値チェックについて見てきました。
IsNumericは便利なメソッドですが、望んだ形の数値型であるかどうかまでは判定してくれません。「では初めから型変換してみたらいいのではないか」と考えるかもしれませんが、画面入力チェックで細かくエラーの内容を伝えたいときなど、役に立つ場面もあると思います。
用途に合わせてご自分なりのVB.NET数値チェックを実装してみてください。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
VB.NET新着案件New Job
-
生産管理システムの単体テスト/東京都千代田区/【WEB面談可】/在宅勤務
月給25万~25万円東京都千代田区(東京駅) -
鉄鋼関連・グループ会社システム支援/Oracle/東京都新宿区/【WEB面談可】/在宅勤務
月給26万~26万円東京都新宿区(新宿駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
Web受注システム運用保守/VB.NET/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
Web受注システム開発のテスター/VB.NET/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅)