检查数字是否为十进制例子:解释:

2022-08-30 09:27:43

如果用户输入了十进制数,我需要签入PHP(美国方式,小数点:X.XXX)

有什么可靠的方法可以做到这一点吗?


答案 1

你可以从is_float那里得到你想要的大部分东西,但如果你真的需要知道它是否有小数,那么你上面的函数并不是很远(尽管语言错误):

function is_decimal( $val )
{
    return is_numeric( $val ) && floor( $val ) != $val;
}

答案 2

如果你想“10.00”返回真正的检查夜猫子的答案

如果您想知道小数是否有值,则可以使用此答案。

适用于所有类型的类型(整型、浮点型、字符串)

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)

来自 PHP 文档

在处理之前,模数的操作数被转换为整数(通过去除小数部分)。

这将有效地破坏op目的,在javascript等其他语言中,您可以使用modulus运算符


推荐