在PHP中,有没有办法在十进制数的某个点后进行正则表达式和删除?

在PHP中,有没有办法在十进制数的某个点后进行正则表达式和删除?,php,regex,Php,Regex,有没有办法做一个正则表达式,在某一点上不舍入地截断一个数字(简单地舍去数字?)比如在4位数之后。。。。它永远不会处理负数。我可以有数字输入,如0.03123或1.31,或10000.98等。。。。就我的解决方案而言,我所写的是四舍五入,而不是我所寻求的 $number = 10000.51999999; $precision = 4; echo "<br>"; // grab number before decimal by rounding down the whole numb

有没有办法做一个正则表达式,在某一点上不舍入地截断一个数字(简单地舍去数字?)比如在4位数之后。。。。它永远不会处理负数。我可以有数字输入,如0.03123或1.31,或10000.98等。。。。就我的解决方案而言,我所写的是四舍五入,而不是我所寻求的

$number = 10000.51999999;
$precision = 4;
echo "<br>";

// grab number before decimal by rounding down the whole number down...
$numberBeforeDecimal = floor($number); 
echo "<br>";

// grab the decimal and set the correct precision needed
$n = $number;
intval($n); // 12
$theDecimalPart = explode('.', number_format($n, ($precision)))[1]; // 3430

echo $theDecimalPart; // this is outputting 5200

$theNewValue = $numberBeforeDecimal.".".$theDecimalPart;
$number=10000.5199999;
$precision=4;
回声“
”; //通过将整数向下舍入,获取小数点前的数字。。。 $numberBeforeDecimal=楼层($number); 回声“
”; //抓取小数点并设置所需的正确精度 $n=$number; intval($n);//12 $theDecimalPart=explode('.',number_格式($n,($precision))[1];//3430 echo$theDecimalPart;//这是输出5200 $theNewValue=$numberbeforedcimal.“.”$theDecimalPart;
  • 在数组中分离出整数和小数部分的数字
  • 使用函数从小数部分获取相关精度
  • 最后,将它们连接回来
尝试以下()方法:


是的,你甚至可以用
\d+\。\d{1,4}
会给你一个小数点后1-4位的浮点数。
$output=floor($input*100)/100不要为此使用正则表达式。但是,如果必须使用正则表达式,它将如下所示:
preg\u match(“~^\d+\.\d\d~”、“123.4567”、$matches)number\u format()
函数。这不是一个适合你的答案,因为它是四舍五入的,但它将用一行代码替换你在问题中编写的代码中的所有工作。为什么需要
strval
?@user3783243已修复。yikes。。。这比我想的要容易。。。。thanks@MrChemical乐意帮忙:)
$number = 10000.51999999;
$precision = 4;

// separate out the integer and decimal part
$number_str_arr = explode('.', $number);

// concatenate them back
$theNewValue = $number_str_arr[0] . '.' . substr($number_str_arr[1], 0, $precision);
echo $theNewValue; // displays 10000.5199