2012-10-14 36 views
0

我在脚本中有用户输入 - $_POST['money']并且我想确认它实际上是2位小数位的浮点数。检查变量是否有最大2位小数位浮点数

我的计划是$money = (float)@$_POST['money'],在这种情况下,如果输入非数字,它会将$money设置为零。但是当用户输入类似5.234的东西时,可能会发生这种情况,在这种情况下,我也想把钱设置为零。

我不想要explode或类似的东西棘手,我希望有一个这样做的有效方式。

整数也很好,因为它是一个有效的数量。

回答

0

我选择使用此代码:

$money = (float)(@$_POST['money']/0.01) <> (int)(@$_POST['money']/0.01) ? 0 : (float)@$_POST['money']; 

如果您有更好的解决方案,请发布。

+0

已经选择,因为它只使用数学,而不是其他功能(除了铸造) – Drahcir

+0

只有不够好,如果你对地点的数量不感兴趣......只是不喜欢使用'@' – Baba

+0

@Baba:我是感兴趣的地方,我已经测试,这将只适用于地方<= 2,其他任何将导致0这是我需要的地方。 – Drahcir

0

检查这里:

http://php.net/manual/ro/function.is-float.php

这里

http://php.net/manual/en/function.number-format.php

或使用该功能

function is_deccount($number,$decimal=2){ 
    $m_factor=pow(10,$decimal); 
    if((int)($number*$m_factor)==$number*$m_factor) 
     return true; 
    else 
     return false; 
} 
+0

谢谢,但我不确定这会有所帮助。我想要做的就是在不是有效金额的情况下设置'$ money = 0',例如$ _POST ['money'] = 5.234'这是一个有效的浮动但不是金钱的情况。 – Drahcir

+0

你可以使用该功能 – 2012-10-14 16:13:16

+0

好的,谢谢,会尝试 – Drahcir