私はちょうどそれisNumeric('100e00')
が戻るyes
間lsisnumeric('100e00')
戻るのを見ましたno
。
別の16進数(a、b、c、d)をチェックしましたが、それらでnoが返されます。
なぜそれが100e00
数値と見なされるのか誰かが知っていますか?
私はちょうどそれisNumeric('100e00')
が戻るyes
間lsisnumeric('100e00')
戻るのを見ましたno
。
別の16進数(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()は次のように述べています:「文字列が数値の有効な表現であるかどうかを判断します」
微妙な違いがわかりますか?前者は値を強制的に数値にしようとしますが、後者は指示されたとおりに実行します。数値であるかどうかを通知します。