PHP取小数离小数点最近的有效数字位置

今天一个朋友找我帮忙,说是业务计算有问题
朋友:我这边有很多小数,如何获取到这个小数最大的有效值是第几个单位,比如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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值