【问题标题】:Laravel format to 1 decimal placeLaravel 格式到小数点后 1 位
【发布时间】:2021-05-21 15:22:03
【问题描述】:

@if($user->dettagli->facebook_follower >= 1000 && $user->dettagli->facebook_follower <= 999999)

    <?php
         echo(round($user->dettagli->facebook_follower, 5,PHP_ROUND_HALF_DOWN) . "K");
     ?>
                     
     {{$user->dettagli->facebook_follower / 1000}} K
                        
@endif

嗨,有人可以帮助我吗?我正在使用 Laravel 并尝试显示用户 Facebook 关注者数量,但我遇到了一些问题。例如,我以 1589 名追随者的身份了解他们,并试图以“1.5k”的刀片返回。在屏幕上,我通过这个 php 调用返回 1589k 或 1.589k。我怎样才能把这个数字精确到小数点后只有 1.5k? 谢谢!

【问题讨论】:

  • 除以1000,四舍五入格式化到小数点后一位,加上k后缀
  • 我不想给人一种混蛋的印象,但在过去的几周里;你一直在问同样的事情。我强烈建议你在 Laravel 开始一个项目之前,先read the docs。一旦你理解了它,然后开始一个项目,当你有问题时来找我们。目前,您似乎在每一步都在问我们一个问题。 这个问题与the one you asked the other day有何不同

标签: php laravel decimal rounding


【解决方案1】:

根据the docs

将 val 的舍入值返回到指定精度(小数点后的位数)。精度也可以是负数或零(默认)。

您指定的精度为5。你应该把它改成1

将您的函数调用更改为:

echo(round($user->dettagli->facebook_follower, 1, PHP_ROUND_HALF_DOWN) . "K");

编辑:我误读了这个问题。这是一个应该处理数百万个数字的函数。

不过,您需要使用 laravel-twigbridge 使该功能在您的模板中可用。

function pretty_number(int $n): string {
    $prettyN = $n;
    $suffix = '';
    $len = strlen((string) $n);
    $suffixes = ['K', 'M'];
    foreach ($suffixes as $s) {
        if ($n < 1000) {
            break;
        }
        $suffix = $s;
        $n = $n / 1000;
        $prettyN = number_format($n, 1);
    }
    return $prettyN . $suffix;
}

echo pretty_number(100); // 100
echo pretty_number(999); // 99
echo pretty_number(1589); // 1.6K
echo pretty_number(1600); // 1.6K
echo pretty_number(1589300); // 1.6M

【讨论】:

  • 如果您有 1589 个关注者,这不会显示类似 1589K 的内容吗?
  • 对不起,我从那个开始,正如奈杰尔所说,它返回了 1589
  • @LeytonNightingale 我已经更新了答案。
【解决方案2】:

您可以使用NumberFormatter。这可以在全局位置定义,因此您只需要使用刀片视图中的第三行。

$a = new \NumberFormatter("en-US", \NumberFormatter::DECIMAL);
$a->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, 1); 
echo $a->format($user->dettagli->facebook_follower);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 2023-01-02
    相关资源
    最近更新 更多