我在脚本中有用户输入 - $_POST['money']
并且我想确认它实际上是2位小数位的浮点数。检查变量是否有最大2位小数位浮点数
我的计划是$money = (float)@$_POST['money']
,在这种情况下,如果输入非数字,它会将$money
设置为零。但是当用户输入类似5.234的东西时,可能会发生这种情况,在这种情况下,我也想把钱设置为零。
我不想要explode
或类似的东西棘手,我希望有一个这样做的有效方式。
整数也很好,因为它是一个有效的数量。
我在脚本中有用户输入 - $_POST['money']
并且我想确认它实际上是2位小数位的浮点数。检查变量是否有最大2位小数位浮点数
我的计划是$money = (float)@$_POST['money']
,在这种情况下,如果输入非数字,它会将$money
设置为零。但是当用户输入类似5.234的东西时,可能会发生这种情况,在这种情况下,我也想把钱设置为零。
我不想要explode
或类似的东西棘手,我希望有一个这样做的有效方式。
整数也很好,因为它是一个有效的数量。
我选择使用此代码:
$money = (float)(@$_POST['money']/0.01) <> (int)(@$_POST['money']/0.01) ? 0 : (float)@$_POST['money'];
如果您有更好的解决方案,请发布。
检查这里:
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;
}
已经选择,因为它只使用数学,而不是其他功能(除了铸造) – Drahcir
只有不够好,如果你对地点的数量不感兴趣......只是不喜欢使用'@' – Baba
@Baba:我是感兴趣的地方,我已经测试,这将只适用于地方<= 2,其他任何将导致0这是我需要的地方。 – Drahcir