如果$a = 0.0001 则返回4;
如果$a = 0.000003435 则返回9;
如果$a = 0.234344 则返回6这样的函数如何实现?

解决方案 »

  1.   

    $arr = array(0.0000001, 0.00001, 0.000023, 0.1234567890);foreach ($arr as $v)
    {
    $n = 0;
    while (round($v * pow(10, $n)) != $v * pow(10, $n))
    ++$n;
    echo $n, '<br/>';
    }// 7
    // 5
    // 6
    // 9
      

  2.   

    $a = array('0.0001', '0.000003435', '0.234344');
    foreach($a as $v){
        $v = explode('.', $v, 2);
        echo( substr($v[1]) );
    }
      

  3.   

    写错了应该是strlen
    $a = array('0.0001', '0.000003435', '0.234344');
    foreach($a as $v){
        $v = explode('.', $v, 2);
        echo( strlen($v[1]) );
    }
      

  4.   

    gzty的不对,给你5分吧。因为0.000003435输出的不是6不是9.谢谢各位
      

  5.   

    $a = array(0.0001, 0.000003435, 0.234344, '0.0001', '0.000003435', '0.234344');
    var_dump( $a );
    foreach($a as $v){
        //加上这句就对数字或字串类型的都能正确判断了
        is_numeric($v) && $v = preg_replace("/0*$/", '', sprintf('%.10f', $v));
        $v = explode('.', $v, 2);
        echo( strlen($v[1]) );
    }