我刚刚看到了 isNumeric('100e00')
返回 yes
而 lsisnumeric('100e00')
返回 no
.
我检查了另一个十六进制数字(a,b,c,d),但它返回 no 。
有谁知道为什么要考虑它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() 指出:
“确定一个字符串是否是一个数字的有效表示”
你看到细微的差别了吗?前者会试图强制该值是一个数字,而后者只是按照它所说的去做:告诉你它是否是一个数字。
关于coldfusion - isNumeric ('100e00' ) 返回 yes 而 lsisnumeric ('100e00' ) 返回 no,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14772888/