整数或十进制数

Max*_*ler 12 php

我正在寻找一个函数来测试整数是否是整数.到目前为止,我有这个:

if (is_numeric($answer3)) {
    echo "Is triangular\n";
} else {
    echo "Is not triangular\n";
}
Run Code Online (Sandbox Code Playgroud)

但是这总是返回"Is triangular",即使$ answer3是小数.

如何测试整数以查看它是否有小数?

Gal*_*len 16

考虑到浮点数是数字,is_numeric也会为浮点数返回true

查找给定变量是否为数字.数字字符串由可选符号,任意数量的数字,可选的小数部分和可选的指数部分组成.因此+ 0123.45e6是有效的数值.也允许使用十六进制表示法(0xFF),但只能使用符号,十进制和指数部分.

你可以试试is_float(),但是如果输入是一个字符串就不行.

var_dump( is_float( '23.5' ) ); // return false
Run Code Online (Sandbox Code Playgroud)

因此,如果您正在处理某个数字的字符串表示,那么只需查找一个 .

if ( strpos( $answer3, '.' ) === false )
Run Code Online (Sandbox Code Playgroud)

如果需要,可以添加is_numeric

// Make sure its numeric and has no decimal point
if ( is_numeric( $answer3 ) && strpos( $answer3, '.' ) === false )
Run Code Online (Sandbox Code Playgroud)


Ali*_*xel 13

应该10.0被视为整数还是浮点数?如果是整数,那么您正在寻找fmod():

if (fmod($number, 1) == 0) // $number DOES NOT have a significant decimal part
{
    // is whole number
}
Run Code Online (Sandbox Code Playgroud)

否则,is_int()就够了.


编辑:检查无效小数部分的另一种方法是:

if (round($number, 0) == $number)
{
    // is whole number
}
Run Code Online (Sandbox Code Playgroud)