首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >显示小数点2-4位(php)

显示小数点2-4位(php)
EN

Stack Overflow用户
提问于 2013-11-25 20:20:03
回答 3查看 1.3K关注 0票数 1

我试图找出一种产生以下输出的方法:

代码语言:javascript
复制
4.0000 = 4.00

4.5000 = 4.50

4.454= 4.454

4.54545454 = 4.5455

4.450 = 4.45

基本上,我想确保始终有至少2小数位,如果有额外的零,修剪到小数点2位。如果小数超过4位,四舍五入,保持在4位。

我可以用:

代码语言:javascript
复制
number_format($number, 4, '.', '');

然后重新修剪以移除零,但在许多情况下,这将使我的小数位数少于2位。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-11-25 20:38:27

代码语言:javascript
复制
function format_number($number) {
    $str = number_format($number, 4, '.', '');
    return preg_replace('/(?<=\d{2})0+$/', '', $str);
}

format_number(4.0)        // "4.00"
format_number(4.5)        // "4.50"
format_number(4.454)      // "4.454"
format_number(4.54545454) // "4.5455"
format_number(4.450)      // "4.45"
票数 4
EN

Stack Overflow用户

发布于 2013-11-25 20:25:40

这里有一个你可以做到的方法:

代码语言:javascript
复制
function myround($input) {
    $floor = floor($input);
    $remain = rtrim($input- $floor);
    if(strlen($remain) > 4) {
        return number_format($floor + $remain,4);
    } else {
        return number_format($floor + $remain,2);
    }
}

print_r(myround(4.312423)); //outputs 4.3124
print_r(myround(4.3)); //outputs 4.30
print_r(myround(4)); //outputs 4.00
票数 1
EN

Stack Overflow用户

发布于 2013-11-25 20:30:17

如果您想避免REGEX,我会这样做的:

代码语言:javascript
复制
$arr = array();
$arr = 4.0000;
$arr = 4.5000;
$arr = 4.454;
$arr = 4.54545454;
$arr = 4.450;

foreach($arr as $k=>$v)
{
    $arr[$k] = number_format($v, 4, '.', '');

    $vals = exlode('.', (string)$arr[$k]);

    if(substr($vals[1], -1, 1) === '0')
    {
        $arr[$k] = (float)$vals[0].'.'.substr($vals[1], -1, 1);

        $vals = exlode('.', (string)$arr[$k]);

        if(substr($vals[1], -1, 1) === '0')
        {
            $arr[$k] = (float)$vals[0].'.'.substr($vals[1], -1, 1);
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20202472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档