2016-07-01 1 views
2

したがって、'00' == '.0'の場合、ColdFusionはtrueを返します。
これはCF 9.1とCF 10で再現可能です。
find('.', foo)条件を追加することで簡単に回避できますが、これは正常ではありません。ColdFusionでは文字列 '00'が '.0'になりますか?ほかに何か?

このようなことは、ColdFusionを疑わせるものです。それは、なぜ私がこの明らかに偽の状態で真実を返すのかと、他のどのような価値観が等しいと思うのだろうかと思います。

Coldfusionで比較できない値のリストはありますか?それとも、この不一致を防ぐための確実な解決策がありますか?

+1

あなたは私を冗談ですか? '' 0.25 '==' 6A ''。どうして? Coldfusionは0.25が1日の四半期であると考えているため、午前6時もそうです。私は大きなWTFがここにあると思う。 – jan

+0

'writeDump(compare("。0 "、" 00 ")== 0);' CFは巧妙になり、値をキャストしようとします。 compare関数は、2つの文字列の等価性をテストします。 –

+2

私はこれをバグとして提出しました。実際には、これを行うことが記述されています(あいまいな型式と文字列) - http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7f46.html – haxtbh

答えて

0

haxtbが指摘しているように、この問題に関する詳細はこちらEvaluation and type conversion issuesです。これは、ColdFusionが短い文字列値を文字列ではなくdatetime、booleanまたは数値として解釈しようとする型変換の問題です。いくつかの例:

'1a' //datetime: 1:00am 
'1p' //datetime: 1:00pm 
'0.25' //datetime: a quarter of a day or 6:00am 
'.0' //boolean: false 
'.0' //numeric: 0 

ジョン願いが述べたように、あなただけの文字列の比較を行いたい場合は、あなたが代わりに常にCompareまたはCompareNoCase()機能を使用する必要があります。

関連する問題