PHP-Manual的学习----【语言参考】----【类型】-----【float浮点型】
2017-08-03 18:17
309 查看
笔记:
1.浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>
2.浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。
3.以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。
4.所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
5.NaN
某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值进行的松散或严格比较的结果都是 FALSE。
由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 来检查。
1.浮点型(也叫浮点数 float,双精度数 double 或实数 real)可以用以下任一语法定义:
<?php
$a = 1.234;
$b = 1.2e3;
$c = 7E-10;
?>
2.浮点数的字长和平台相关,尽管通常最大值是 1.8e308 并具有 14 位十进制数字的精度(64 位 IEEE 格式)。
3.以十进制能够精确表示的有理数如 0.1 或 0.7,无论有多少尾数都不能被内部所使用的二进制精确表示,因此不能在不丢失一点点精度的情况下转换为二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999999991118...。
4.所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
5.NaN
某些数学运算会产生一个由常量 NAN 所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值。任何拿此值与其它任何值进行的松散或严格比较的结果都是 FALSE。
由于 NAN 代表着任何不同值,不应拿 NAN 去和其它值进行比较,包括其自身,应该用 is_nan() 来检查。
相关文章推荐
- PHP-Manual的学习----【语言参考】----【类型】-----【对象】
- PHP-Manual的学习----【语言参考】----【类型】-----【Resource 资源类型】
- PHP-Manual的学习----【语言参考】----【类型】-----【string字符串型】
- PHP-Manual的学习----【语言参考】----【类型】-----【NULL】
- PHP-Manual的学习----【语言参考】----【类型】-----【Boolean类型】
- PHP手册-语言参考-类型-Float 浮点型
- PHP-Manual的学习----【语言参考】----【类型】-----【Interger类型】
- PHP-Manual的学习----【语言参考】----【类型】
- PHP-Manual的学习----【语言参考】----【类型】-----【array数组】
- PHP-Manual的学习----【语言参考】----【基本语法】
- PHP - Manual手册 - 语言参考 - 类型 - 字符串 - 字符串转换为数值
- PHP - Manual手册 - 语言参考 - 运算符 - 位运算符
- PHP - Manual手册 - 函数参考 - Variable 变量函数 - settype设置变量的类型
- PHP - Manual手册 - 语言参考 - 类与对象(PHP 5)- Class Abstraction类抽象
- 复习PHP-语言参考-类型
- php 语言参考-数据类型
- PHP - Manual手册 - 语言参考 - 控制结构 - foreach遍历数组
- 由float类型与0比较学习浮点型编码格式
- C语言基础学习基本数据类型-浮点型
- PHP手册-语言参考-类型-Integer 整型