cwa*_*ole 90
你可以从is_float中获得你想要的大部分内容,但是如果你真的需要知道它是否有小数,那么你上面的函数并不是很远(尽管语言不对):
function is_decimal( $val )
{
return is_numeric( $val ) && floor( $val ) != $val;
}
Run Code Online (Sandbox Code Playgroud)
Nig*_*Owl 22
如果您需要知道的是变量中是否存在小数点,那么这将完成工作...
function containsDecimal( $value ) {
if ( strpos( $value, "." ) !== false ) {
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这不是一个非常优雅的解决方案,但它适用于字符串和浮点数.
确保在strpos测试中使用!==而不是!=否则会得到不正确的结果.
771*_*120 18
如果你想要"10.00"返回真实检查夜猫子的答案
如果您想知道小数是否有值,您可以使用此答案.
适用于所有类型(int,float,string)
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
}
Run Code Online (Sandbox Code Playgroud)
(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
Run Code Online (Sandbox Code Playgroud)
fmod 返回参数除法的浮点余数(modulo),(因此(!== 0.00))
模数运算符 - 为什么不使用模数运算符?例如($val % 1 != 0)
从PHP文档:
在处理之前,模数的操作数被转换为整数(通过去除小数部分).
这将有效地破坏op的目的,在其他语言如javascript中你可以使用模数运算符
你发布的功能不是PHP.
编辑:我错过了"用户输入值"部分.在这种情况下,您实际上可以使用正则表达式:
^\d+\.\d+$
Run Code Online (Sandbox Code Playgroud)
小智 5
我传递了一个字符串,想知道它是否为十进制。我结束了这个:
function isDecimal($value)
{
return ((float) $value !== floor($value));
}
Run Code Online (Sandbox Code Playgroud)
我在零的两端进行了一系列测试,包括小数和非小数,它似乎有效。
| 归档时间: |
|
| 查看次数: |
86081 次 |
| 最近记录: |