请解释为什么以下代码随机行为
以下代码行返回TRUE
时应返回FALSE
?Isnumeric("555-")
另外
?Isnumeric("555-"/2)
返回TRUE
请解释IsNumeric
的随机行为?
答案 0 :(得分:7)
尽管有点深奥,尾随减号是有时在会计包中使用的有效数字格式。我想它现在用得不那么多了。它表示负数,例如555-是-555。你的第二个例子是有效的,因为-555(或555-)可以除以2,即-227.5(或227.5 - )。
您可以在Excel界面中看到它允许格式作为文本到列的一部分:
此外,您可以设置数字格式以使用尾部否定:
#,##0;#,##0-
请参阅此blog-post。
答案 1 :(得分:3)
来自Microsoft:
如果Expression的数据类型为Boolean,Byte,Decimal,Double,Integer,Long,SByte,Short,Single,UInteger,ULong或UShort,或者包含其中一种数字类型的Object,则IsNumeric返回True。如果Expression是可以成功转换为数字的Char或String,它也会返回True。
如果Expression的数据类型为Date或数据类型为Object且不包含数字类型,则IsNumeric返回False。如果Expression是无法转换为数字的Char或String,则IsNumeric返回False。
答案 2 :(得分:2)
看起来它将“555-”解释为-555。 检查IsNumeric后,您可能会检测到这种情况:
Cstr(CLng("555-")) = "555-"