俺#

新潟市でIT業を営むおっさんのブログ。

PHPのintval()にfloatを渡したときの話 #php #教えて偉い人

以下のようなコードを実行致します。

<?php

function test($v)
{
	var_dump($v);
	var_dump(intval($v));
}

echo("----\n");
test(0.201 * 1000);

echo("----\n");
test(2.01 * 100);

echo("----\n");
test(20.1 * 10);

echo("----\n");
test((float)201);

?>


以下のような結果になるわけです。

>php a.php
----
float(201)
int(201)
----
float(201)
int(200)
----
float(201)
int(201)
----
float(201)
int(201)

>

どれも「intval()」に「floatな201」を渡してるにも関わらず、2番目だけ戻りが「intの200」になっちゃう。
var_dump()する限り「floatな201」で違いが判らんのだが、そこまでの演算によって内部的には違ってるんだろうか。
PHPって変数の中身をバイト列でダンプとかできんのか?だれかおせーて(>_<)