浮動小数点型:float
そふぃのPHP入門 >> PHP言語リファレンス >> PHPの型 >> 浮動小数点型:float

浮動小数点型:float

浮動小数点型とは

浮動小数点型(floatもしくはdouble)は少数を持つ数値の事です。また、整数型の限界値(約21億)を超えた場合は少数を持たなくても浮動小数点型として扱われます。非常に大きな数値を扱う事ができる為、「倍精度実数」などとも呼ばれるようです。名前の「double」の方はこっちの呼び方からとられたものと思われます。

浮動小数点型は以下のような形式で表現できます。

  1. <?php
  2. $a = 1.234; //少数を持つ数値
  3. $b = 1.2e3; //指数形式 1.2×10の3乗
  4. $c = 7E-10; //指数形式 Eと大文字にもできるし負の値を扱う事もできる
  5. echo $a."<br />\n";
  6. echo $b."<br />\n";
  7. echo $c;
  8. ?>

出力結果

1.234
1200
7.0E-10

指数形式の説明を少し加えておきます。上のサンプルでの1.2e3というのは1.2×10の3乗の事です。つまり

1.2e3 = 1.2×103

という意味になります。

浮動小数点値の精度と限界

浮動小数点型(float)で扱える値の限界値も整数型と同じく、プラットフォームに依存するとマニュアルに記載されています。ただし、通常は10進数で14桁の精度があるそうです。

注意したいのは2進数変換による誤差のため、小数に若干の狂いが生じる場合がある、という事です。以下の計算式が代表的な例です。floor()関数は「値を切り捨てる」関数です。

  1. <?php
  2. print floor( (0.1 + 0.7) * 10 ); //この計算は「8」になるはずだが・・・
  3. ?>

出力結果

7

参考関数

  • floor() ---- 値を切り捨てる

書式

  • float floor( float value )

これは、内部で若干の誤差が生じて計算結果が「7.999999.......」になったからです。

この為、なるべく少数の最後の桁を信用しないようにとPHPマニュアルに警告されています。だからといって精度の高い計算ができないというわけではなく、精度の高い計算をしたい時には専用の関数が用意されているようです。