今天一个朋友找我帮忙,说是业务计算有问题
朋友:我这边有很多小数,如何获取到这个小数最大的有效值是第几个单位,比如0.0123456,最大的有效值为小数点后第2个单位,0.0065 最大的有效值为小数点后第3个单位
实际应用为,在大数据计算上,需要进行一个浮动值变化,通常为小数点后N+位小数,那么为了方便且直观地展示,需要尽可能的缩短这个浮动值并展示出来
比如 +0.0000084665 只需要显示0.000008即可
我们就可以通过这个方法定位这个8所在位置,然后通过number_format(小数,所在位置)即可
那么我把解决方案分享一下
主题:PHP内置函数number_format()
function getMaxDecimalPosition($number) {
$decimalPart = explode('.', $number)[1]; // 将小数部分提取出来
$maxValidValue = max(str_split($decimalPart)); // 找到小数部分中的最大值
$maxDecimalPosition = strpos($decimalPart, $maxValidValue) + 1; // 获取最大值所在的位置
return $maxDecimalPosition;
}
$number1 = 0.0123456;
$number2 = 0.0065;
$maxPosition1 = getMaxDecimalPosition(number_format($number1, 10, '.', ''));
$maxPosition2 = getMaxDecimalPosition(number_format($number2, 10, '.', ''));
echo "最大有效值所在的位置:";
echo "对于 {$number1},最大有效值在小数点后第{$maxPosition1}个单位\n";
echo "对于 {$number2},最大有效值在小数点后第{$maxPosition2}个单位\n";
//实际应用
$float = 0.00008545;
$floatNum = getMaxDecimalPosition($float); //输出位5
$new= number_format($float ,$floatNum ); //输出位0.00008