PHP
 Computer >> コンピューター >  >> プログラミング >> PHP

PHPのfloat(浮動小数点数)データ型の基本と使い方を解説

float型の定義と使い方

PHPにおけるfloat(浮動小数点数)データ型は、小数部を持つことのできる任意の数値を表します。小数部は小数点以下の桁として記述できるほか、eまたはEを使った科学表記法(指数表記)でも表せます。たとえば、100を科学表記法で書くと「10e2」となります。

floatのサイズはハードウェアやOSのプラットフォームに依存しますが、一般的には小数点以下14桁程度の精度がサポートされています。

構文

// 変数へのfloatリテラルの代入
$var = 5327.496;     // 標準表記
$var1 = 5.327496e3;  // 科学表記法(小文字のe)
$var2 = 5.327496E3;  // 科学表記法(大文字のE)
$var3 = 5_327.496;   // 区切り文字を使用

可読性を高めるために、数値リテラルには「_(アンダースコア)」を桁区切り文字として使用できます。PHPのパーサーは処理時にこの区切り文字を自動的に無視するため、実際の値には影響しません。

$var = 5_327.496; // 5327.496 として扱われる

対応するPHPバージョン

区切り文字「_」の使用は、PHP 7.4以降で利用可能です。それ以前のバージョンでは構文エラーになるため注意してください。

それでは、具体的なコード例を見ていきましょう。

例1:標準表記でのfloatリテラル

<?php
$var = 5327.496;
echo $var . "\n";
?>

出力結果

5327.496

例2:科学表記法でのfloatリテラル

次の例では、小文字の「e」と大文字の「E」を使った科学表記法を示します。どちらの表記でも同じ値として扱われます。

<?php
$var1 = 5.327496e3;
echo $var1 . "\n";
$var2 = 5.327496E3;
echo $var2 . "\n";
?>

出力結果

5327.496
5327.496

例3:区切り文字「_」の使用(PHP 7.4以降)

<?php
$var3 = 5_327.496;
echo $var3 . "\n";
?>

出力結果

5327.496

補足:float型の判定方法

変数がfloat型かどうかを調べるには、is_float()関数(エイリアスのis_double()も同じ動作)を使用します。また、gettype()関数はfloat型の変数に対して歴史的な経緯から「double」を返す点にも留意しておきましょう。

<?php
$x = 10.365;
var_dump(is_float($x)); // bool(true)
echo gettype($x);       // double
?>

金額計算など高い精度が求められる場面では、float型の誤差に注意し、必要に応じてBCMath関数など任意精度演算の利用を検討するとよいでしょう。

  1. Pythonのタプル(tuple)データ型とは?基本と使い方を徹底解説

    タプル(tuple)とはタプルは、リストとよく似たもう一つのシーケンス型(シーケンスデータ型)です。タプルは、カンマで区切られた複数の値によって構成されます。リストとの大きな違いは、タプルが丸括弧 ( ) で囲まれるという点です。リストとタプルの主な違いリストとタプルの違いは、次のようにまとめられます。リストは角括弧 [ ] で囲み、要素やサイズを後から変更できる。タプルは丸括弧 ( ) で囲み、一度作成すると更新できない。そのため、タプルは「読み取り専用(read-only)のリスト」と考えることができます。変更されない固定データを扱いたい場合に、タプルは非常に便利です。タプルの基本的な使い

  2. Pythonの文字列データ型の基本:定義方法・スライス・連結・繰り返しを解説

    Pythonにおける文字列とはPythonの文字列(string)は、引用符で囲まれた連続した文字の集合として表現されるデータ型です。Pythonでは、単一引用符(...)と二重引用符(...)のどちらのペアでも文字列を定義でき、両者に機能上の違いはありません。また、文字列の一部(部分文字列)を取り出すには、スライス演算子([ ] および [:])を使用します。インデックスは文字列の先頭が「0」から始まり、末尾に向かって「-1」という負の値で逆方向にも数えられるのが特徴です。文字列の連結と繰り返し文字列に対して使える主な演算子は以下のとおりです。+ (プラス記号):文字列同士を連結する演算子*