6

我刚刚看到isNumeric('100e00')返回yeslsisnumeric('100e00')返回no

我检查了另一个十六进制数字(a,b,c,d),但它没有返回。

有谁知道为什么它被认为100e00是一个数值?

4

1 回答 1

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() 状态:“确定字符串是否是数字的有效表示”

你看到细微的差别了吗?前者会尝试强制该值是一个数字,而后者只是按照它的指示做:告诉你它是否是一个数字。

于 2013-02-08T13:12:54.373 回答