PHP删除小数中的第一个零而不进行舍入



如何在不舍入的情况下删除十进制数中的第一个零。每当函数检测到小数中的第一个零时,停止它并删除零和多余的小数。

我试过这个:

$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);
}

期望输出:

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;
}

如果将其视为字符串,然后获得所需的子字符串,然后转换回float:,这似乎会容易得多

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);

输出:

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

相关内容

  • 没有找到相关文章

最新更新