int 是强制转换类型吗?
为什么int 转换时不是自已想要的呢?
查了查没有查到。
如 (int)(10*(0.7*0.1)) 为什么等于7呢?

解决方案 »

  1.   

    是的,但不推荐使用
    $v = 10*(0.7*0.1);
    echo (int)$v; //out 0
    echo intval($v); //out 0
      

  2.   

    整数
    如 (int)(10*(0.7*0.1)) 为什么等于7呢
    强制做了类型转换。
      

  3.   

    写错了,是加号不是乘号
    (int)(10*(0.7+0.1))
      

  4.   

    精度计算考虑用bc开头那一系列数学函数
    大数计算考虑打开gmp扩展,使用gmp_系列数学函数
    这个例子手册直接说明了问题了,0.7+0.1,内部表示可能是0.799999999999,而非0.8
    echo bcmul(10,0.7+0.1);
      

  5.   

    0.7可以看成是0.699999999....
    0.1可以看成是0.099999999....
    相加是0.7999999999.....
    *10是7.9999999.....
    取整则是7ps:不要认为float已经精确到位了····