从PHP中的小数中删除无用的零数字
我试图find一个快速的方法来从数字值中删除zero decimals像这样: 
 echo cleanNumber('125.00'); // 125 echo cleanNumber('966.70'); // 966.7 echo cleanNumber(844.011); // 844.011 
是否存在一些优化的方式来做到这一点?
  $num + 0的窍门。 
 echo 125.00 + 0; // 125 echo '125.00' + 0; // 125 echo 966.70 + 0; // 966.7 
 在内部,这等价于使用(float)$num或floatval($num)来进行浮点floatval($num)但是我发现它更简单。 
 你可以使用floatval函数 
 echo floatval('125.00'); // 125 echo floatval('966.70'); // 966.7 echo floatval('844.011'); // 844.011 
 简单地将+添加到你的stringvariables将导致types转换(浮动)和删除零: 
 echo +'125.00'; // 125 echo +'966.70'; // 966.7 echo +844.011; // 844.011 var_dump(+'844.011asdf'); // double(844.011) 
这是我使用的:
 function TrimTrailingZeroes($nbr) { return strpos($nbr,'.')!==false ? rtrim(rtrim($nbr,'0'),'.') : $nbr; } 
 注意这个假设. 是小数点分隔符。 它具有的优点是它可以在任意大的(或小的)数字上工作,因为没有浮动投射。 它也不会把数字变成科学记数法(例如1.0E-17)。 
你应该把你的号码作为花车,这将为你做这个。
 $string = "42.422005000000000000000000000000"; echo (float)$string; 
输出这将是你在找什么。
42.422005
 $x = '100.10'; $x = preg_replace("/\.?0*$/",'',$x); echo $x; 
没有什么不能用一个简单的正则expression式来修复;)
对于每个来到这个网站的人都有与逗号相同的问题,你可以改变:
 $num = number_format($value, 1, ',', ''); 
至
 $num = str_replace(',0', '', number_format($value, 1, ',', '')); // eg 100,0 becomes 100 
这帮助了我,我想我并不孤单。
如果有两个零要删除:
至
 $num = str_replace(',00', '', number_format($value, 2, ',', '')); // eg 100,00 becomes 100 
更多在这里: PHP号码:小数点只有在需要时才可见
 types转换为float 。 
 $int = 4.324000; $int = (float) $int; 
您可以使用sprintf()函数
 sprintf('%g','125.00'); //125 sprintf('%g','966.70'); //966.7 sprintf('%g',844.011); //844.011 
复杂的方式,但工程:
 $num = '125.0100'; $index = $num[strlen($num)-1]; $i = strlen($num)-1; while($index == '0') { if ($num[$i] == '0') { $num[$i] = ''; $i--; } $index = $num[$i]; } //remove dot if no numbers exist after dot $explode = explode('.', $num); if (isset($explode[1]) && intval($explode[1]) <= 0) { $num = intval($explode[0]); } echo $num; //125.01 
上面的解决scheme是最佳的方式,但如果你想拥有自己的,你可以使用这个。 这个algorithm是从string的末尾开始的,并检查它是否为0 ,如果是,则设置为空string,然后从后面进入下一个字符,直到最后一个字符大于0
奇怪的是,当我用“浮动”types从数据库中得到一个数字,并且如果我的数字是ex。 10000浮动时,它变成1。
 $number = $ad['price_month']; // 1000 from the database with a float type echo floatval($number); Result : 1 
我已经testing了上述所有的解决scheme,但没有奏效。
这是我的小解决scheme…可以包括到一个class,并设置增值税
private $ dsepparator ='。'; 私人$ tsepparator =',';
这可以通过构造函数设置并更改为用户lang。
 public function numberOmat($amount, $decimals = 2, $hideByZero = false) { return ( $hideByZero === true AND ($amount-floor($amount)) <= 0 ) ? number_format($amount, 0, $this->dsepparator, $this->tsepparator) : number_format($amount, $decimals, $this->dsepparator, $this->tsepparator); } 
 $value = preg_replace('~\.0+$~','',$value); 
您可以使用:
 print (floatval)(number_format( $Value), 2 ) ); 
此代码将删除零点后,将只返回两位十进制数字。
  $数= 1200.0000; 
  str_replace('。00','',number_format($ number,2,'。','')); 
输出将是:1200