# 浮点型
[TOC]
## 概述
浮点型就是常说的小数,浮点数的字长跟平台相关精度有限。由于内部表达方式的原因,浮点数的精度有限,而我们永远不能相信浮点数精确到了哪一位,也永远不要比较两个浮点数是否相等,想要使用更大精度的浮点数,[任意精度数学函数](http://php.net/manual/en/ref.bc.php)和[gmp](http://php.net/manual/en/ref.gmp.php) 函数。
## 其他数据类型转换为浮点型
字符串类型转换为浮点型,请查看[String conversion to numbers](http://php.net/manual/en/language.types.string.php#language.types.string.conversion),而其他数据类型转换为浮点型,会先转换为整型,然后再转换为浮点型。
## 浮点型比较
要测试浮点型是否相等,要使用一个仅比该数值大一丁点的最小误差值。
Example #1 $a 和 $b 在小数点后五位精度内都是相等的。
~~~
<?php
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;
if(abs($a-$b) < $epsilon) {
echo "true";
}
?>
~~~
## NAN
某些数学运算会产生NAN,代表未定义或者一个不可描述的数,不应该将NAN与其他值作比较,包括NAN自身,应该用[is_nan()](http://php.net/manual/en/function.is-nan.php)函数检查。
Example #2 is_nan()函数的使用
~~~
<?php
// Invalid calculation, will return a
// NaN value
$nan = acos(8);
var_dump($nan, is_nan($nan));
?>
~~~