2013-02-08 6 views
6

isNumeric('100e00')yesを返し、lsisnumeric('100e00')noを返します。isNumeric( '100e00')はyesを返します。lsisnumeric( '100e00')が返さない場合

別の16進数(a、b、c、d)を確認しましたが、noを返します。

誰もがなぜ100e00を数値とみなしているのか分かりませんか?

+0

おそらく科学記法のことです。それを整数にキャストするか、数値フォーマットを実行して何が得られるかを見てください。 –

答えて

10

100e00、すなわち、科学的表記法である:* 10 100^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()は述べて "文字列が数値に変換できるかどうかを決定します":「 を文字列であるかどうかを決定します数字の有効な表現 "

微妙な違いはありますか?前者は数値を強制的に数値にしようとしますが、後者は数値だけであるかどうかを伝えます。

+0

それは理にかなっています!ご回答いただきありがとうございます。 – Ander2

+0

'formBaseN(100e00,10)'を使ってそれを100に評価することができます。 'formateBaseN(100e5,10)'は10000000になります。 'formeBaseN( '100e5'、10)はまだ10000000です。またはDanのような数字の形式numberformat( '100e5')= 10,000,000 – Travis

+0

または単にval()を使用してください。この場合、あなたがしようとしていることの意図に近くなります。 –

関連する問題