isNumeric('100e00')返回yes,而lsisnumeric('100e00')返回no

时间:2013-02-08 12:44:17

标签: coldfusion

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

我已经检查了另一个十六进制数字(a,b,c,d)但是它们返回no。

有谁知道为什么将100e00视为数值?

1 个答案:

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

你看到了微妙的区别吗?前者会试图将值强制为数字,而后者只是执行它所说的:告诉你它是否是数字。