我刚刚看到isNumeric('100e00')
返回yes
时lsisnumeric('100e00')
返回no
。
我检查了另一个十六进制数字(a,b,c,d),但它没有返回。
有谁知道为什么它被认为100e00
是一个数值?
我刚刚看到isNumeric('100e00')
返回yes
时lsisnumeric('100e00')
返回no
。
我检查了另一个十六进制数字(a,b,c,d),但它没有返回。
有谁知道为什么它被认为100e00
是一个数值?
100e00
是科学计数法,即:100 * 10^0,或:100。
<cfset string = "100e00">
<cfset numeric = val(string)>
<cfoutput>
values:<br />
string: #string#<br />
numeric: #numeric#<br />
<hr />
isNumeric()<br />
string: #isNumeric(string)#<br />
numeric: #isNumeric(numeric)#<br />
<hr />
lsIsNumeric()<br />
string: #lsIsNumeric(string)#<br />
numeric: #lsIsNumeric(numeric)#<br />
</cfoutput>
这输出:
values:
string: 100e00
numeric: 100
isNumeric()
string: YES
numeric: YES
lsIsNumeric()
string: NO
numeric: YES
isNumeric()
和的功能lsIsNumeric()
略有不同,超出了后者的语言环境感知。
isNumeric() 声明:“确定字符串是否可以转换为数值”(我的重点)
lsIsNumeric() 状态:“确定字符串是否是数字的有效表示”
你看到细微的差别了吗?前者会尝试强制该值是一个数字,而后者只是按照它的指示做:告诉你它是否是一个数字。