PHP 数値

この章では、整数、浮動小数点数、および数値文字列について詳しく見ていきます。

PHPの数値(Numbers)

PHPには主に次の3つの数値型があります:

  • 整数(Integer)
  • 浮動小数点数(Float)
  • 数値文字列(Number Strings)

さらに、PHPには次の2つの数値に使用されるデータ型があります:

  • 無限大(Infinity)
  • NaN(Not a Number)

数値型の変数は値を割り当てるときに作成されます:

$a = 5;
$b = 5.34;
$c = "25";

PHPでオブジェクトの型を確認するには、var_dump()関数を使用します:

var_dump($a);
var_dump($b);
var_dump($c);

PHPの整数(Integers)

2、256、-256、10358、-179567はすべて整数です。

整数は小数部分を持たない数です。

32ビットシステムでは、整数データ型は-2147483648から2147483647の間の非小数の数です。64ビットシステムでは、-9223372036854775808から9223372036854775807の間です。これを超える値は浮動小数点数として保存されます。

注意

もう1つ重要なことは、たとえば4 * 2.5が10であっても、結果は浮動小数点数として保存されることです。なぜなら、式内の値の1つが浮動小数点数(2.5)だからです。

整数のルール:

  • 整数は少なくとも1つの数字を持たなければなりません
  • 整数に小数点を付けてはいけません
  • 整数は正または負のどちらでもかまいません
  • 整数は10進数(基数10)、16進数(0xで始まる基数16)、8進数(0で始まる基数8)、または2進数(0bで始まる基数2)で指定できます

PHPには次の整数に関連する定義済みの定数があります:

  • PHP_INT_MAX – サポートされる最大の整数
  • PHP_INT_MIN – サポートされる最小の整数
  • PHP_INT_SIZE – 整数のバイト単位のサイズ

変数の型が整数かどうかをチェックするために使用できるPHPの関数は次のとおりです:

  • is_int()
  • is_integer() – is_int()のエイリアス
  • is_long() – is_int()のエイリアス

$x = 5985;
var_dump(is_int($x));

$x = 59.85;
var_dump(is_int($x));

PHPの浮動小数点数(Floats)

浮動小数点数は小数点を含む数または指数形式の数です。

2.0、256.4、10.358、7.64E+5、5.56E-5はすべて浮動小数点数です。

浮動小数点数のデータ型は一般的に1.7976931348623E+308(プラットフォームに依存)までの値を格納でき、最大精度は14桁です。

PHPにはPHP 7.2から浮動小数点数に関する次の定義済みの定数があります:

  • PHP_FLOAT_MAX – 表現可能な最大浮動小数点数
  • PHP_FLOAT_MIN – 最小の表現可能な正の浮動小数点数
  • PHP_FLOAT_DIG – 浮動小数点数に戻すことができる10進数の桁数
  • PHP_FLOAT_EPSILON – 1.0に加えてxが1.0と等しくない最小の表現可能な正数x

変数の型が浮動小数点数かどうかをチェックするために使用できるPHPの関数は次のとおりです:

  • is_float()
  • is_double() – is_float()のエイリアス

$x = 10.365;
var_dump(is_float($x));

PHPの無限大(Infinity)

PHP_FLOAT_MAXを超える数値は無限大と見なされます。

PHPには数値が有限か無限かをチェックするための次の関数があります:

  • is_finite()
  • is_infinite()

$x = 1.9e411;
var_dump($x);

PHPのNaN(Not a Number)

NaNは数学的に不可能な演算に使用されます。

PHPには数値がNaNかどうかをチェックするための関数があります:

  • is_nan()

$x = acos(8);
var_dump($x);

PHPの数値文字列(Numerical Strings)

PHPのis_numeric()関数は変数が数値かどうかを調べるために使用されます。関数は変数が数値または数値文字列であればtrueを返し、それ以外の場合はfalseを返します。

$x = 5985;
var_dump(is_numeric($x));

$x = "5985";
var_dump(is_numeric($x));

$x = "59.85" + 100;
var_dump(is_numeric($x));

$x = "Hello";
var_dump(is_numeric($x));

注意:PHP 7.0以降:is_numeric()関数は16進数形式の数値文字列(例:0xf4c3b00c)に対してfalseを返します。これらはもはや数値文字列と見なされません。

PHPで文字列と浮動小数点数を整数にキャストする

時には数値を別のデータ型にキャストする必要があります。

(int)、(integer)、およびintval()関数は、値を整数に変換するためによく使用されます。

// 浮動小数点数を整数にキャスト
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;

echo "
"; // 文字列を整数にキャスト $x = "23465.768"; $int_cast = (int)$x; echo $int_cast;