2016-07-01 41 views
2

所以我注意到ColdFusion爲條件'00' == '.0'返回true
這是在CF 9.1和CF 10中可重現的。
我可以通過添加find('.', foo)條件輕鬆解決此問題,但這不正常。在Coldfusion中字符串'00'等於'0'?還有什麼?

這樣的事情讓我懷疑ColdFusion。這讓我想知道爲什麼它在這個明顯錯誤的情況下回歸真實,以及它認爲什麼其他值相等?

是否有一個您無法在Coldfusion中比較的值列表?或者更好的是,是否有一個可靠的解決方案來防止這種不匹配?

+1

你在開玩笑吧? ''0.25'=='6A'。爲什麼?因爲Coldfusion認爲0.25是一天中的四分之一,而上午6點也是如此。我認爲這是一個很大的WTF。 – jan

+0

嘗試'writeDump(比較(「。0」,「00」)== 0);'CF試圖聰明並投入值,它通常做的不好。比較函數在兩個字符串中測試相等性。 –

+2

我把它作爲一個錯誤提交給他們,他們驗證爲一個。它實際上記錄,但他們這樣做(模糊的類型表達式和字符串) - http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec22c24-7f46.html – haxtbh

回答

0

正如haxtb指出的,這裏有更多關於這個問題的信息:Evaluation and type conversion issues。這是一個類型轉換問題,其中ColdFusion嘗試將短字符串值解釋爲日期時間,布爾值或數值而不是字符串。一些例子:

'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 

正如約翰願望提到的,如果你只想做一個字符串比較,你應該總是使用CompareCompareNoCase()功能來代替。

相關問題