我需要在PHP中检查用户是否输入了十进制数(美国方式,带小数点: X.XXX)
有什么可靠的方法可以做到这一点吗?
发布于 2011-07-21 15:28:53
你可以从is_float得到你想要的大部分东西,但是如果你真的需要知道它里面是否有小数,你上面的函数并不是很远(尽管使用了错误的语言):
function is_decimal( $val )
{
return is_numeric( $val ) && floor( $val ) != $val;
}发布于 2014-11-06 21:23:13
如果您希望"10.00“返回true,请检查夜猫子的答案
如果你想知道小数是否有值,你可以使用这个答案。
适用于所有类型的(整型、浮点型、字符串型)
if(fmod($val, 1) !== 0.00){
// your code if its decimals has a value
} else {
// your code if the decimals are .00, or is an integer
}示例:
(fmod(1.00, 1) !== 0.00) // returns false
(fmod(2, 1) !== 0.00) // returns false
(fmod(3.01, 1) !== 0.00) // returns true
(fmod(4.33333, 1) !== 0.00) // returns true
(fmod(5.00000, 1) !== 0.00) // returns false
(fmod('6.50', 1) !== 0.00) // returns true解释:
fmod返回参数除法的浮点余数(模数)(因此(!== 0.00))
模运算符-为什么不使用模运算符?例如,($val % 1 != 0)
在处理之前,模数的
操作数被转换为整数(通过去掉小数部分)。
这将有效地破坏op的用途,在其他语言中,如javascript,您可以使用模运算符。
发布于 2012-01-24 12:07:06
如果你只需要知道变量中是否存在小数点,那么这就可以完成工作了……
function containsDecimal( $value ) {
if ( strpos( $value, "." ) !== false ) {
return true;
}
return false;
}这不是一个非常优雅的解决方案,但它适用于字符串和浮点数。
确保在strpos测试中使用!==而不是!=,否则会得到不正确的结果。
https://stackoverflow.com/questions/6772603
复制相似问题