tetsunosukeのnotebook

tetsunosukeのメモです

早速ですが、PHPのキモい仕様のお時間です。

castの恐怖

以下のスクリプトの実行結果は?

<?php
echo (int) ((0.1 + 0.7) * 10);

答え:7

ええええええええええ。


もちろん、(0.1 + 0.7) * 10をそのまま出力すると8と出るのですが、内部的に7.999999で持っているらしく、それを整数にキャストするから7になるらしい。

http://jp.php.net/manual/ja/language.types.float.php

きんもー。

文字列++

<?php
$a = 'Test';
echo ++$a . PHP_EOL;
$b = 'Hello';
echo $b++ . PHP_EOL;

これの出力結果は?

(手元の環境では)
Tesu
Hello

でした。でもテキストの説明によるとTestが数値の0に変換されて、1足されるので1になると書いてあった・・・。どっちやねん。

ちなみに定数PHP_EOLも初めて知った。今まで"\n"とか書いていたけど、今後はこれ使うよ。