others - 数字 - PHP从小数中删除无用的零

我正在尝试从数字值中删除zero decimals,方法如下:


echo cleanNumber('125.00');


// 125



echo cleanNumber('966.70');


// 966.7



echo cleanNumber(844.011);


// 844.011



有优化的方法吗?

时间:

$num 0的trick 。


echo 125.00 + 0; // 125


echo '125.00' + 0; // 125


echo 966.70 + 0; // 966.7



在内部,这等同于使用(float)$num或floatval($num)进行强制转换,但是,我发现用它更简单。

你可以使用floatval函数


echo floatval('125.00');


// 125



echo floatval('966.70');


// 966.7



echo floatval('844.011');


// 844.011



以下是我使用的内容:


function TrimTrailingZeroes($nbr) {


 return strpos($nbr,'.')!==false ? rtrim(rtrim($nbr,'0'),'.') : $nbr;


}



假设. 是小数点分隔符。它的优点是可以在任意大的(小或小)数字上工作,因为没有浮点转换,它也不会把数字变成科学符号(例如,1.0 E-17 )。

你应该把你的数字当作浮点数,这样你就可以。


$string ="42.422005000000000000000000000000";


echo (float)$string;



输出将是您正在寻找的。

42.422 005


$x = '100.10'; 


$x = preg_replace("/.?0*$/",'',$x); 


echo $x;



没有什么是不能用简单的正规表达式来修复的;)

http://xkcd.com/208/

如果你想在页面或模板上显示零位数字。

你可以使用sprintf()函数


sprintf('%g','125.00');


//125



‌‌sprintf('%g','966.70');


//966.7



‌‌‌‌sprintf('%g',844.011);


//844.011



Typecast到float


$int = 4.324000;


$int = (float) $int;



...