【 PHP 】PHP8に入門してみた 61日目 PHPの基本 ( 演算子 無限循環に注意 )

2022年10月17日

PHP8技術者認定初級試験 が始まるようなので 試験に向けて (できるだけ)勉強しようと思います! 使用する書籍は独習PHP 第4版(山田 祥寛)|翔泳社の本 (shoeisha.co.jp) となります。

演算子

無限循環小数には注意

浮動小数点を使用する際によくおちいるのが無限循環小数です。

コンピュータは2進数しか理解できません。
整数の場合は問題ないのですが少数の場合は表現できない数値があります。
身近な例で言うと0.1です。0.1は2進数で表現すると0.0001100110011....と際限なく続きます。
しかもこの2進数は「ほぼ0.1」というだけであって「0.1」ではありません😵

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>PHPの基本</title>
</head>

<body>
    <?php
    // print命令は指定された文字列を表示するための命令です。
    $msg = 'こんにちは、変数の世界! <br />';

    print $msg;
    print 'こんにちは、皆さん! ';

    print '<br />';

    $x = 0.1;
    print floor(($x + 0.7) * 10);
    print '<br />';

    // PHPには任意精度関数という関数があります。
    // bcxxxxという関数を使用することで期待した結果になります。
    $x = bcadd(0.1, 0.7, 1);
    $y = bcmul($x, 10, 1);
    print floor($y);
    print '<br />';
    ?>
</body>

</html>

以下のようになります。

メモ

コンピュータの世界ではこれが普通です。

任意精度関数は便利そうですが・・・。

PHPPHP

Posted by raika@blog