编辑:下面的函数现在可以正确地处理缩写,实现了@Asad的解决方案
嗨,我目前正在做一个喜欢按钮,我已经有了所有的基本功能很好地工作,但我已经开始了数字缩写代码和撞墙,因为我不能想出如何使缩写更精确。
我有一个号码,例如100012301500 154000 1500000 1000000
我想用一个缩写来格式化它们。即
如果是1000,那么1k,1.1k,2k,10k,10.5k等等...
以此类推,数万,数十万和数百万,等等。
目前,我有以下函数,但还不够具体:
function abreviateTotalCount($value)
{
$abbreviations = array(12 => 'T', 9 => 'B', 6 => 'M', 3 => 'K', 0 => '');
foreach($abbreviations as $exponent => $abbreviation)
{
if($value >= pow(10, $exponent))
{
return round(floatval($value / pow(10, $exponent))).$abbreviation;
}
}
}提前感谢!
发布于 2012-10-24 21:13:52
如果您希望保留小数位,请使用floatval而不是intval:
return round(floatval($value / pow(10, $exponent)),1).$abbreviation;获取float表示形式并舍入到小数点后1位。
发布于 2012-10-24 21:16:46
检查项目https://github.com/gburtini/Humanize-PHP/blob/master/Humanize.php
php > echo HumanizePHP::intword(256,0,0);
3 hundred
php > echo HumanizePHP::intword(256,0,1);
2.6 hundred
php > echo HumanizePHP::intword(256,0,2);
2.56 hundred至少你可以从这个实现中获得灵感
发布于 2012-10-24 21:19:08
不使用intval(),而是使用number_format()为您提供一个具有所需小数位数的数字。
https://stackoverflow.com/questions/13049851
复制相似问题