Heim >Backend-Entwicklung >PHP-Tutorial >PHP算法:如何把 00301.0050600变成正整数30100506

PHP算法:如何把 00301.0050600变成正整数30100506

WBOY
WBOYOriginal
2016-06-06 20:40:251034Durchsuche

<code><br>/**
 * @description 小数点变成正整数
 *
 * @param $str
 *
 * @return mixed
 */
function toIntegerNum($str)
{
    $str = preg_replace('/(\.\d+)([0]*)/' , '\\1' , $str);
    $str = str_replace('.' , '' , $str);

    return $str;
}

$s = 00301.0050600;
var_dump(toIntegerNum($s)); //输出string '30100506' (length=8)
</code>

新修改

重新改写了一下,还有更好的方法吗

<code>/**
 * @description 小数点变成正整数
 *
 * @param $str
 *
 * @return mixed
 */
function toIntegerNum($str)
{
    $arr = explode('.' , $str);

    if (!empty($arr[0])) {
        $arr[0] = ltrim($arr[0] , '0');
    }

    if (!empty($arr[1])) {
        $arr[1] = rtrim($arr[1] , '0');
    }

    return ltrim(implode('' , $arr),'0');
}

$s = '00301.0050600';
//$s = 00301.0050600;
//$s = 300;
$s = 0.00560000;
var_dump(toIntegerNum($s));
</code>

回复内容:

<code><br>/**
 * @description 小数点变成正整数
 *
 * @param $str
 *
 * @return mixed
 */
function toIntegerNum($str)
{
    $str = preg_replace('/(\.\d+)([0]*)/' , '\\1' , $str);
    $str = str_replace('.' , '' , $str);

    return $str;
}

$s = 00301.0050600;
var_dump(toIntegerNum($s)); //输出string '30100506' (length=8)
</code>

新修改

重新改写了一下,还有更好的方法吗

<code>/**
 * @description 小数点变成正整数
 *
 * @param $str
 *
 * @return mixed
 */
function toIntegerNum($str)
{
    $arr = explode('.' , $str);

    if (!empty($arr[0])) {
        $arr[0] = ltrim($arr[0] , '0');
    }

    if (!empty($arr[1])) {
        $arr[1] = rtrim($arr[1] , '0');
    }

    return ltrim(implode('' , $arr),'0');
}

$s = '00301.0050600';
//$s = 00301.0050600;
//$s = 300;
$s = 0.00560000;
var_dump(toIntegerNum($s));
</code>

按状态来解析:

  1. 记录整数部分头部零:
    从前往后逐位解析一遍,记录头部零的位数,直到遇到非零值或结尾;
  2. 记录小数部分尾部零:
    如果有小数点,则从后往前逐位解析一遍,记录尾部零的位数,直到遇到非零值或小数点;
  3. 把头部零和尾部0全部刨除,最后去掉小数点。

LZ已经给出答案了啊=w=

<code><?php $a = 00301.0050600;

    echo str_replace('.', '', floatval($a));
</code></code>

<code>return trim(str_replace('.','',$str),'0')
</code>

借 @tczzjin 的答案

<code>$str = 00301.0050600;
echo intval(str_replace('.','',$str));
</code>
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn