簡體   English   中英

PHP 從小數中刪除第一個零而不進行四舍五入

[英]PHP remove first zero from decimals without round off

如何在不四舍五入的情況下刪除十進制數中的第一個零。 每當 function 檢測到十進制中的第一個零時,停止它並刪除零和多余的小數。

我試過這個:

$number = 1.063;
echo floor_dec($number,$deg);

    function floor_dec($number, $deg = null)
    {
        if ($deg == null)
            return $number * 1000 / 1000;
        else
            return $number * pow(10, $deg) / pow(10, $deg);
    }

所需的 output:

1.063 -> output 1
1.30720-> output 1.3
1.3072-> output  1.3
1.823070  -> output 1.823

使用strpos()的棘手問題

function removeFirstZeroToEnd($number)
{
    $str = explode('.',$number);
    if(isset($str[1])){
        // find first zero after decimal
        $num = substr($str[1],0, strpos($str[1], "0"));
        // adding zero will convert it to number
        $number = ($str[0].'.'.$num) + 0;
    }
    return $number;
}

似乎這會容易得多,只需將其視為字符串,然后只需獲取所需的 substring 然后轉換回浮點數:

floatval(rtrim(substr($number, 0, strpos($number, 0)), "."));

強制性正則表達式解決方案:

$numbers = [
    123,
    1.063,
    1.30720,
    1.3072,
    1.823070
];
foreach ($numbers as &$n) {
    $n = preg_replace ('~^([0-9]+(\.[1-9]+)?).*~','$1',$n);
}
print_r($numbers);

Output:

Array
(
    [0] => 123
    [1] => 1
    [2] => 1.3
    [3] => 1.3
    [4] => 1.823
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM