🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 浮点型 [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)); ?> ~~~