2015-04-24 29 views
1

我尝试使用php函数从php变量中删除零数字,但无法工作。如何从php变量中删除0(零数字)?

我尝试使用roundfloorceil但不起作用。

我该怎么做?

2.00 ===> 2 
2.05 ===> 2.05 (not remove zero) 
2.50 ===> 2.5 
2.55 ===> 2.55 (not remove zero) 
+1

floor/ceil不能在2.50上工作,因为这在数学上不正确(会给你2或3)。 – Maximus2012

+4

请向我们展示您的**完整**和**真实**代码和您的尝试 – Rizier123

+0

看看是否有帮助:http://stackoverflow.com/questions/5149129/how-to-strip-trailing-zeros-in- php – Maximus2012

回答

0

您必须有字符串变量。请将其转换为浮动状态(浮动)$ var,如果打印出结果,则将丢失这些零。

其他选项是对字符串使用rtrim删除0和。从最后。看到这里http://php.net/rtrim

+0

修剪将删除所有前导零:'2 === trim(200,'0');' – Mike

0

例子试试这个:

$list = array("2.00", "2.05", "2.50", "2.55"); 
foreach($list as $val) 
    echo (double) $val . "</br>"; 

输出:

2 
2.05 
2.5 
2.55 
+0

什么是'double' php命令? –

+0

@robertdewere - 有关更深入的解释和链接,请参阅下面的答案。 – Mike

0

试试这个:

number_format((float)$your_number, 2, '.', ''); 

我有同样的问题。函数number_format()将数字作为字符串返回,因此它不会在末尾移除零。

-1
$price = '2.00'; 
$price2 = '2.50'; 
$price3 = '2.05'; 

function formatPrice($price) 
{ 
    /* Format number with 2 decimal places, then remove .00, then right trim any 0 */ 
    return rtrim(str_replace('.00', '', number_format($price, 2)), '0'); 
} 

echo formatPrice($price); //2 
echo formatPrice($price2); //2.5 
echo formatPrice($price3); //2.05 
+0

他们想要删除'2.50'中的最后一个'0' – Mike

+0

已更新。我没有明白。 –

+0

请删除您的downvote。 –

0

在PHP中,你可以cast值的Float Type(双,浮法,真正的),这将下降(后十进制)所有前导或尾随零。

2.5 === (double) "2.50" 

注意,但是,这并不格式化您的号码不是删除0的其他(这并不能保证货币格式)。有关格式化,请参见number_format()

2.5 === (double) number_format('2.501', 2, '.', ''); 

例子:

(float) 2.00 === 2 
(float) 2.05 === 2.05 // (not remove zero) 
(float) 2.50 === 2.5 
(float) 2.55 === 2.55 // (not remove zero) 

而且证明:http://ideone.com/wimBHm

一个值得注意的有趣的事情是,测试(float) 2.00 === 2居然不及格,这是因为2实际上是(int)类型,并因此通过===测试失败,但是,正如您所看到的,输出结果正是您正在查找的内容。