首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数字是否为小数

问检查数字是否为小数
EN

Stack Overflow用户
提问于 2011-07-21 15:22:08
回答 18查看 118.2K关注 0票数 54

我需要在PHP中检查用户是否输入了十进制数(美国方式,带小数点: X.XXX)

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

EN

回答 18

Stack Overflow用户

回答已采纳

发布于 2011-07-21 15:28:53

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

代码语言:javascript
复制
function is_decimal( $val )
{
    return is_numeric( $val ) && floor( $val ) != $val;
}
票数 112
EN

Stack Overflow用户

发布于 2014-11-06 21:23:13

如果您希望"10.00“返回true,请检查夜猫子的答案

如果你想知道小数是否有值,你可以使用这个答案。

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

代码语言:javascript
复制
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
}

示例:

代码语言:javascript
复制
(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 docs

在处理之前,模数的

操作数被转换为整数(通过去掉小数部分)。

这将有效地破坏op的用途,在其他语言中,如javascript,您可以使用模运算符。

票数 35
EN

Stack Overflow用户

发布于 2012-01-24 12:07:06

如果你只需要知道变量中是否存在小数点,那么这就可以完成工作了……

代码语言:javascript
复制
function containsDecimal( $value ) {
    if ( strpos( $value, "." ) !== false ) {
        return true;
    }
    return false;
}

这不是一个非常优雅的解决方案,但它适用于字符串和浮点数。

确保在strpos测试中使用!==而不是!=,否则会得到不正确的结果。

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6772603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档