2013-11-22 87 views
-1

我这个小爆炸过程:为什么爆炸函数转换值?

$var = 120.180; 
$var = explode("." , $var); 
$var1 = $var[0]; 
$var2 = $var[1]; 

echo $var1; 
echo $var2; 

回声:

120和18,为什么呢?为什么180转换为18,我该如何解决?

回答

5

因为120.180不是一个字符串,它是一个数字。因此120.180将变成120.18 - 因为零是浮点值。你会发现只是回显120.180仍然会产生120.18。

如果您确实$var = "120.180";,I.E.在数字周围使用了引号,你会得到你期待的结果。

+0

这实际上回答了问题,而不是仅仅提供一个解决方案,多余的可能是一个不正确的词,在这里它摆脱了'0',因为它的浮动值...所以php舍入到'120.18' –

+0

Thanks @ Mr.Alien - 修正。 – George

1

与$ var当成一个字符串再试一次:

$var = '120.180'; 
+1

但为什么输出是120和18与原始代码? –

+0

yes解决了gread谢谢 – user2999787

+0

因为$ var = 120.180;是一个数字和$ var [1]将是小数部分... –

0

你不能修复它。它打破了开始。而是从不同的事物开始。

$var = '120.180'; 
$var = explode("." , $var); 
$var1 = $var[0]; 
$var2 = $var[1]; 

echo $var1; 
echo $var2; 
2

把值引号使用$ var当成一个字符串:

$var = '120.180'; 

现在你节省120.180一些浮点值,这将减少尾随零。

1

$var不包含您的期望。请看下面的代码:

$var = 120.180; 
var_dump($var); 

这将输出float(120.18) - 你可以看到,它去掉了零了。这就是数字如何存储在PHP中。

如果要保留0 s,请将该号码存储为字符串。

$var = '120.180';