PHP学习笔记(10)—— 浮点数与运算优先级

浮点数并不精确

10进制:3.1,是3 * 10^0 + 1 * 10^-1;
3进制:1.1,是 3 * 3^0 + 1 * 3^-1;对应与10进制的1.33333333333333……..3333…
某些小数在10进制下,是有限的,转成2进制要无限循环,因此损失一些精度,导致浮点数计算与数学上的结果不一致。

if ( (0.3 - 0.2) == 0.1) {
    echo '相等';
} else {
    echo '不等';
}

逻辑运算的短路特性与运算的优先级

$house = false;
$car = true;

if ($house && $car) { //房子已经为假,又用并且计算,结果为假,程序并不会判断$car的值
    echo '嫁', '<br />';
} else {
    echo '不嫁', '<br />';
}

$b = 1;
if ($house && ($b = 6)) { //$b = 6被短路,没机会执行
}
echo $b, '<br />';//1

if ($house || ($b = 6)) { //$b = 6被短路,没机会执行
}
echo $b, '<br />';//6

$b = 1;
if ($car || ($b = 6)) { //$b = 6被短路,没机会执行
}
echo $b, '<br />'; //1

//利用短路写出简短代码
if(!defined('PI')){
    define('PI', 3.14);
}   //defined('PI') || define('PI', 3.14);

$a = 3;
$b = 5;
if ($a =5 || $b = 7) { //  '||' 的优先级大于 '='
    $a ++; // $a为布尔值,递增或递减布尔值没有效果
    $b ++;	//返回$b的值,再加1,因为返回没有任何执行,比如赋值
}
echo $a,$b;//1,6,此处$b已经加1了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值