标签:精度 方便 数学函数 解释 info 函数 开头 类型 redo
要明确地将一个值转换成boolean,用(bool)或者(boolean)来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个boolean参数时,该值会被 自动转换。
当转换为boolean时,以下值被认为时FALSE:
1.布尔值FALSE本身
2.整型值0
3.浮点型值0.0
4.空字符串,以及字符串"0"
5.不包括任何元素的数组
6.不包括任何成员变量的对象(仅PHP4.0适用)
7.特殊类型NULL
8.从空标记生成的SimpleXML对象
所有其它值都被认为时TRUE(包括任何资源)
整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(-或者+)。二进制表达的Integer自PHP5.4.0起可用。要使用八进制表达,数字前必须加上0,要使用十六进制表达,数字前面必须加上0x,要使用二进制进行表达,数字前必须加上0b。如果给定的一个数超过了integer范围,将会被解释为float。同样如果执行的运算结果超出了integer范围,也会返回float。
整型的字长和平台有关,尽管通常最大值约为二十亿(32位有符号)。64位平台下的最大值通常是大约9E18。PHP不支持无符号整数。Integer值的字长可以用常量PHP_INT_SIZE表示,自PHP4.4.0和PHP5.0.5后,最大值可以用常量PHP_INT_MAX来表示。
要明确地将一个值转换为Integer,用(int)或者(integer)强制转换。不过大多数下都不需要强制转换,因为当运算符,函数或流程控制需要一个integer参数时,值会自动转换。还可以通过函数intval()来将一个值转换成整型。
测试结果:
永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者gmp函数。如上述警告信息所言,由于内部表达式地原因,比较两个浮点数是否相等是有问题的。不过还是有迂回的办法来比较浮点数值的。
要测试浮点数是否相等,要使用一个仅仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算所能接受的最小的差别值。
$a和$b在小数点后五位内精度是相等的。
测试结果:
某些数学运算会产生一个由常量NaN所代表的结果。此结果代表着一个在浮点数运算中未定义或不可表述的值,任何拿此值与其它任何值进行的松散或严格比较的结果都是False。由于NaN代表任何不同值,不应该拿NaN去和其它值进行比较,包括其自身,应用is_nan()来检查。
定义一个字符串的最简单的方法是用单引号把它包围起来(‘)。
如果字符串是包围在双引号(")中,PHP不仅可以解析变量还可以对一些特殊的字符进行解析:
第三种表达式字符串的方法是用heredoc语法结构:<<<。在该运算符之后要提供一个标识符,然后换行。接下来时字符串string本身,最后要用前面定义的标识符作为结束标志。结束时所引用的标识符必须在该行的第一列,而且,标识符的命名也要像其它标签一样遵守PHP的规则:只能包含字符、数字和下划线,并且必须以字母和下划线作为开头。
Heredoc结构不能用来初始化类的属性。自PHP5.3起,此限制仅对Heredoc包含变量时有效。
测试结果:
就像Heredoc结构类似于双引号字符串,Nowdoc结构是类似于单引号字符串的。Nowdoc结构很像Heredoc结构,但是Nowdoc中不进行解析操作。这种结构就很适合用于嵌入PHP代码或其它大段文本而无需对其中的特殊字符进行转义。
一个Nowdoc结构也用和Heredoc结构一样的标记<<<,但是跟在后面的标识符要用单引号括起来,即用<<<‘EOT‘。Heredoc结构的所有规则也同样适用于Nowdoc结构,尤其是结束符的规则。Nowdoc结构是在PHP5.3.0中加入的。不像Heredoc结构,Nowdoc结构可以用在任意的静态数据环境中,最典型的示例是用来初始化类的属性或常量。
测试结果:
当字符串用双引号或Heredoc结构定义时,其中的变量将会被解析。这里共有两种语法规则:一种简单规则,一种复杂规则。简单的语法规则是最常用和最方便的,它可以用最少的代码在一个string中嵌入一个变量,一个array的值,或一个object的属性;复杂规则语法的显著标记是用花括号包围表达式。
标签:精度 方便 数学函数 解释 info 函数 开头 类型 redo
原文地址:https://www.cnblogs.com/xiaojiang0414/p/12916142.html