判断明明应该到1里面可是却输出到2了,麻烦看看 看下这个输出echo $money - ($yuanprice * $discount );PHP的浮点数运算比较特殊,可以这样判断 if ( ($orderingid == $yuanorderingid) && abs($money - ($yuanprice * $discount )<0.0001) ) {} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 因为你的 $yuanprice、$discount 是小数所以运算时采用的浮点运算但是浮点运算会丢失精度,所以造成 $money 不等于 ($yuanprice * $discount )不过 php 提供了高精度数学运算函数if ( ($orderingid == $yuanorderingid) && $money == bcmul($yuanprice, $discount, 2) ) {就会输出 1 了 直接用bcMath库吧if(($orderingid == $yuanorderingid) && $money == bcmul($yuanprice, $discount,2)){ 我建议做一下 类型转换, 浮点类型的数字结果比较比较特殊, 那就建议把浮点类型的计算结果 转化成 字符型; if ( ($orderingid == $yuanorderingid) && $money == (string)($yuanprice * $discount ) ) { echo "1"; }else { echo "22"; } printf('%f', ($yuanprice * $discount )); // 0.090000所以與$money不同。改成這樣就可以了。$yuanorderingid="118894";$discount="0.9";$orderingid="118894";$money="0.09";$yuanprice="0.1";echo "discount:".$discount."-orderingid:".$orderingid ."-yuanorderingid:".$yuanorderingid."-money:".$money."<br>" ;printf('%f', ($yuanprice * $discount ));echo '<br>';if ( ($orderingid == $yuanorderingid) && $money == round(($yuanprice * $discount ),2) ) {echo "1";}else {echo "22";} 急,问一个小问题,php中mysql语句 询问PHP的mcrypt 要如何配置才能支持 用PHP正则表达式清除字符串的空白 php 生成html时数据插入数据库??? 请帮帮我! 可以让这两条规则共同存在吗? 为什么错了? [好简单]晕死!如何判断字符串中是否有 ‘?’字符?? ■如何更新记录集?■ 如何把一个Select的值传到php的变量中? php发送邮件 如何得到数组中,某个元素等于X值的数组?
所以运算时采用的浮点运算
但是浮点运算会丢失精度,所以造成 $money 不等于 ($yuanprice * $discount )
不过 php 提供了高精度数学运算函数
if ( ($orderingid == $yuanorderingid) && $money == bcmul($yuanprice, $discount, 2) ) {
就会输出 1 了
if(($orderingid == $yuanorderingid) && $money == bcmul($yuanprice, $discount,2)){
if ( ($orderingid == $yuanorderingid) && $money == (string)($yuanprice * $discount ) ) {
echo "1";
}else {
echo "22";
}
所以與$money不同。改成這樣就可以了。$yuanorderingid="118894";
$discount="0.9";
$orderingid="118894";
$money="0.09";
$yuanprice="0.1";
echo "discount:".$discount."-orderingid:".$orderingid ."-yuanorderingid:".$yuanorderingid."-money:".$money."<br>" ;
printf('%f', ($yuanprice * $discount ));
echo '<br>';
if ( ($orderingid == $yuanorderingid) && $money == round(($yuanprice * $discount ),2) ) {
echo "1";
}else {
echo "22";
}