字符串' 00'等于' .0'在Coldfusion?还有什么?

时间:2016-07-01 14:12:41

标签: coldfusion duck-typing

所以我注意到ColdFusion为条件true返回'00' == '.0' 这在CF 9.1和CF 10中是可再现的 我可以通过添加find('.', foo)条件轻松解决这个问题,但这不正常。

这样的事情让我怀疑ColdFusion。它让我想知道为什么它会在这个明显错误的条件下返回true,以及它认为其他什么值相等?

您是否有可以在Coldfusion中进行比较的值列表?或者更好的是,是否有一个可靠的解决方案来防止这种不匹配?

1 个答案:

答案 0 :(得分:0)

正如haxtb所指出的,这里有关于此问题的更多信息:Evaluation and type conversion issues。这是一个类型转换问题,ColdFusion尝试将短字符串值解释为datetime,boolean或numeric值而不是字符串。一些例子:

'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

正如John Wish所说,如果你只是想进行字符串比较,你应该总是使用CompareCompareNoCase()函数。