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

PHPでfloat(浮動小数点数)値を比較する方法

PHPでfloat(浮動小数点数)値を比較する方法を、具体的なコード例とともに解説します。

例1:== 演算子によるシンプルな比較

まずは、== 演算子を使って2つのfloat値が等しいかどうかを判定する基本例です。

<?php
    $a = 2.5;
    $b = 3.5;
    echo $a;
    echo "\n$b";
    if($a == $b) {
        echo "\nBoth the values are equal!";
    } else {
        echo "\nBoth the values aren't equal";
    }
?>

出力結果

上記のコードを実行すると、次のような出力になります。

2.5
3.5
Both the values aren't equal

$a と $b の値が異なるため、「等しくない」というメッセージが表示されます。

例2:round() 関数を使った丸めての比較

続いて、round() 関数で小数点以下を指定した桁数に丸めてから比較する例を見てみましょう。

<?php
    $a = 1.967;
    $b = 1.969;
    echo $a;
    echo "\n$b";
    if((round($a, 2)) == (round($b, 2))) {
        echo "\nBoth the values are equal!";
    } else {
        echo "\nBoth the values aren't equal";
    }
?>

出力結果

このコードを実行すると、以下の出力が得られます。

1.967
1.969
Both the values are equal!

元の値は異なりますが、小数第2位で丸めるとどちらも「1.97」になるため、「等しい」と判定されました。

補足:浮動小数点数の比較における注意点

float値はコンピュータ内部で2進数として表現されるため、見た目上は同じ値でも微小な誤差が発生することがあります。そのため、float同士を直接 == で比較することは推奨されていません。厳密な比較が必要な場合は、round() や number_format() で丸めてから比較するか、許容誤差(イプシロン)を用いた比較、あるいは任意精度演算が可能な BCMath 関数の利用を検討するとよいでしょう。

  1. PHPのidate()関数とは?書式指定子と使い方をわかりやすく解説

    idate()関数とはPHPのidate()関数は、ローカルの時刻や日付を整数(int)としてフォーマットして返す関数です。date()関数と似ていますが、idate()は常に1つの数値のみを返す点が大きな特徴です。構文idate(format, timestamp)パラメータtimestamp − 整数のUnixタイムスタンプ。省略した場合は現在のローカル時刻、つまりtime()の戻り値がデフォルトで使用されます。format − 戻り値の形式を指定する書式文字。指定できる文字は以下の通りです。書式指定文字の一覧B − スウォッチビート(インターネットタイム)d − 日(月の中の日)h −

  2. PHPのnext()関数の使い方|配列の内部ポインタを進める方法

    next()関数とはPHPのnext()関数は、配列の内部ポインタを次の要素へ進め、進めた先の要素の値を返すための関数です。配列には内部的なポインタが存在し、current()で現在位置の値を取得したり、next()で要素を順番に辿ったりすることができます。構文next(arr)パラメータarr − 操作対象となる配列戻り値next()関数は、成功した場合に配列内の次の要素の値を返します。それ以上要素が存在しない場合はFALSEを返します。使用例以下はnext()関数の基本的な使用例です。<?php $os = array(windows, mac, linux, solaris); e