# php格式化数字为“1.23万”

**URL:** <https://www.shiqidu.com/t/topic/506>\
**Category:** 开发调优\
**Tags:** PHP\
**Created:** [2018 年11 月 7 日 08:51 UTC](https://www.shiqidu.com/t/topic/506 "2018-11-07T08:51:55Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![yeqiu](https://www.shiqidu.com/user_avatar/www.shiqidu.com/yeqiu/32/14_2.png) [@yeqiu](https://www.shiqidu.com/u/yeqiu)\
发布日期： [2018 年11 月 7 日 08:51 UTC](https://www.shiqidu.com/t/topic/506/1 "2018-11-07T08:51:55Z")

</div>

有时候直接展示一个大的数字比较不美观，就需要把数字格式化处理。比如把23000格式化为2.3万。

```php
/**
 * @param $number
 * @return string
 */
function formatNumber($number)
{
    if (empty($number) || !is_numeric($number)) return $number;
    $unit = "";
    if ($number > 10000) {
        $leftNumber = floor($number / 10000);
        $rightNumber = round(($number % 10000) / 10000, 2);
        // $rightNumber = bcmul(($number % 10000) / 10000, '1', 2);
        $number = floatval($leftNumber + $rightNumber);
        $unit = "万";
    } else {
        $decimals = $number > 1 ? 2 : 6;
        $number = (float)number_format($number, $decimals, '.', '');
    }
    return (string)$number . $unit;
}

```

```php
$number = formatNumber(0.000123);
$number1 = formatNumber(12001.00);
$number2 = formatNumber(1216111.123341);
$number3 = formatNumber(1200.00);
$number4 = formatNumber(1213.114049);
$number5 = formatNumber(20);
$number6 = formatNumber(10600.00);

var_dump($number, $number1, $number2, $number3, $number4, $number5, $number6);

```

结果为

```php
'0.000123'
'1.2万'
'121.61万'
'1200'
'1213.11'
'20'
'1.06万'

```
