2013年3月12日火曜日

Validation その3

今回は数値についてです。これが厄介です。
普通、数値と言いますと自然数を想定してコーディングする方が多いかと思います。
ですが、プログラム上で表現できる数値には様々な種類があります。



  • 符号の有無(+-)
  • 基数の違い(2進数、8進数、10進数、16進数)
  • int型の範囲(32ビット符号付ですと-2147483648~2147483647)を超える数値
  • 浮動小数点
  • 指数表現

これらの値について、使用しても良いかどうかを考慮しつつコーディングをしていかなければなりません。
今回は数値の中でも最も頻繁に使われる形式、Integerについて考えていきましょう。

チェックの手順

1. 引数がint型かどうかを調べる
int型ならreturn

2. int型でなければ次の可能性が上げられる
2.1 float型
2.2 string型の数値文字列
2.3 数値とは全く関係のない値

3. int型にキャストする際に注意すべき点
3.1 int型を超えた値でないか
超えていたらNULLを返す
超えていなければint型にキャストした値を返す

4. 数値とは全く関係ない値の場合
NULLを返す

サンプルコード 実行結果
NULL : NULL
"" : NULL
"a" : NULL
0 : int(0)
1 : int(1)
+1 : int(1)
-1 : int(-1)
0x0A : int(10)
012 : int(10)
0.1 : int(0)
1e3 : int(1000)
1e-3 : int(0)
array("") : NULL
array("a") : NULL
array(array("a")) : NULL
TRUE : NULL
FALSE : NULL
object : NULL
fopen : NULL
成功です。以降、数値のチェックをする際はこの関数を使って入力チェックを行っていきます。

0 件のコメント:

コメントを投稿