我刚看到isNumeric('100e00')
返回yes
而lsisnumeric('100e00')
返回no
。
我已经检查了另一个十六进制数字(a,b,c,d)但是它们返回no。
有谁知道为什么将100e00
视为数值?
答案 0 :(得分:10)
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()指出: “确定字符串是否是数字的有效表示”
你看到了微妙的区别吗?前者会试图将值强制为数字,而后者只是执行它所说的:告诉你它是否是数字。