[英]Remove useless zero digits from decimals and remove decimals above 2 in 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.