如何在PHP中从小数中删除最后一位数字

3

我希望能在PHP中删除小数的最后一位数字。 比如说,我有一个14.153。我想让它变成14.15。我会一直这样做,直到我的数字不再是小数。


你需要一次一个数字地进行操作吗?还是一次性全部操作也可以? - StephenTG
1
尝试使用 number_format()round() 函数?或者我没有理解这个问题? - gen_Eric
我需要它在我的算法中只出现一次。 - nikitz
number_format() 返回一个字符串。如果您将进行进一步的数学计算,那么 round() 将是更好的选择。 - Patrick Moore
以上示例中,您的最终预期输出是什么? - Rikesh
4
如果您不需要进行进一步的计算,甚至可以使用substring函数。 <?php echo substr('14.153', 0, -1);?> - Mubo
3个回答

4

我认为这个应该可以工作:

<?php
$num = 14.153;
$strnum = (string)$num;

$parts = explode('.', $num);
// $parts[0] = 14;
// $parts[1] = 153;

$decimalPoints = strlen($parts[1]);
// $decimalPoints = 3

if($decimalPoints > 0)
{
    for($i=0 ; $i<=$decimalPoints ; $i++)
    {
        // substring($strnum, 0, 0); causes an empty result so we want to avoid it
        if($i > 0)
        {
            echo substr($strnum, 0, '-'.$i).'<br>';
        }
        else
        {
            echo $strnum.'<br>';
        }
    }
}
?>

已编辑以考虑原始浮点数,包括所有小数点。 - MonkeyZeus

2
你可以尝试这个。 实时演示
<?php

  $number = 14.153;

  echo number_format($number,2);

由于 OP 需要多次执行此操作,因此展示一种适应小数位数的方法可能会有帮助,而不是硬编码为 2。 - StephenTG
1
很抱歉,这将数字四舍五入到小数点后第二位。 - nikitz

2
echo round(14.153, 2);  // 14.15

第二个参数“round second”设置小数点后的位数。


由于 OP 需要多次执行此操作,因此展示一种根据小数位数自适应的方法可能会更有帮助,而不是硬编码为 2。 - StephenTG
1
很抱歉,这个将数字四舍五入到小数点后第二位。 - nikitz
这是四舍五入,而不是 OP 所需的“删除”最后一位小数。 - Henry Lynx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接