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

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

WBOY
Freigeben: 2016-06-06 20:40:25
Original
1063 Leute haben es durchsucht

<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>
Nach dem Login kopieren
Nach dem Login kopieren

新修改

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

<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>
Nach dem Login kopieren
Nach dem Login kopieren

回复内容:

<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>
Nach dem Login kopieren
Nach dem Login kopieren

新修改

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

<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>
Nach dem Login kopieren
Nach dem Login kopieren

按状态来解析:

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

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

<code><?php $a = 00301.0050600;

    echo str_replace('.', '', floatval($a));
</code></code>
Nach dem Login kopieren

<code>return trim(str_replace('.','',$str),'0')
</code>
Nach dem Login kopieren

借 @tczzjin 的答案

<code>$str = 00301.0050600;
echo intval(str_replace('.','',$str));
</code>
Nach dem Login kopieren
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage