php添加千位分隔符而不调整小数位

Posted

技术标签:

【中文标题】php添加千位分隔符而不调整小数位【英文标题】:php add thousandseperator without adjusting decimal places 【发布时间】:2010-05-24 13:31:28 【问题描述】:

我正在寻找一种方法来使用 php number_format 函数或类似的方法,它会添加千位分隔符,但会保留数字的任何小数部分,而不会对其进行格式化。例如:

39845.25843 => 39,845.25843

347346.8 => 347,346.8

1000000 = > 1,000,000

谢谢

【问题讨论】:

【参考方案1】:
$val = number_format($val, strlen(end(explode('.', $val))));

编辑:如果你想处理整数,如果不添加没有小数的情况,上面的方法也不起作用

$val = number_format( $val, (strstr($val, '.')) ? strlen(end(explode('.', $val))) : 0 );

【讨论】:

【参考方案2】:

我对变量名没有什么想象力,但这样就可以了:

function conv($str) 
    $t = explode(".", $str);
    $ret = number_format(reset($t), 0);
    if (($h = next($t)) !== FALSE)
        $ret .= "." . $h;
    return $ret;

【讨论】:

【参考方案3】:

与上面相同,但我的转折:

function mod_numberformat($num)
    // find & cache decimal part
    $pos = strpos($num, '.');
    $decimal = $pos !== false ? substr($num, $pos) : '';

    // format number & avoid rounding
    $number = number_format($num, 9);

    // strip new decimal part & concatenate cached part
    $number = substr($number, 0, strpos($number, '.'));
    $number .= $decimal;

    return $number;

【讨论】:

以上是关于php添加千位分隔符而不调整小数位的主要内容,如果未能解决你的问题,请参考以下文章

PHP字符串函数 number_format(以千位分隔符方式格式化一个数字)

JS 实现四舍五入保留两位小数并且添加千位分隔符

PHP在总和中添加千位分隔符[重复]

如何获取 toLocaleString() 方法的小数和千位分隔符?

PHP在数字中添加千位分隔符并保持前导零

如何在 5.7.0 版本的 D3.js 中制作自定义千位分隔符和小数字符