在 Excel 中1234 > qwer = false
,但是1234 < qwer = true
. 在 C# 中使用可空类型后,我希望这两个语句都返回,false
就像将值与空值进行比较时一样。
这背后的理由是什么?它是否记录在某处?
我的第一个想法是 Excel 在内部将数字转换为字符串,然后比较字符串,但是:
'129 < '11a = false
- 当左侧部分作为文本输入时
129 < '11a = true
- 当左侧部分作为数字输入时
在 VBAvariant
中,类型比较的工作方式与电子表格相同
Sub CompareNumberAndText()
Dim a, b, c
at = "129"
an = 129
b = "11a"
ct = at < b 'false
cn = an < b 'true
End Sub
我正在开发一个类型类似于 Excel 单元格的库,并希望使行为尽可能接近 Excel,但是这些 Excel 比较结果是违反直觉的。在这种情况下,我会抛出错误或返回 false。
我可以想象一个假设的情况,当在 AI 列中通过将两个数字相除来计算某个值,例如市盈率,但对于负 EI,输入“nm”。然后在 BI 列中检查 P/E > some_value,如果练习是寻找昂贵的股票,那么显示负收益的股票会产生一些(但很少)意义,并且可能对进一步的手动操作有用 -当有 20 只股票时进行逐一分析。但是如果有 2000 个并且我计算了一些聚合,这可能会被忽视。