NumericalOrder
NumericalOrder[e1,e2]
如果 e1<e2,给出 1,如果 e1>e2,给出 -1,如果 e1 和 e2 数值上相等,则给出 0,如果 e1 和 e2 在数值上不具有可比性,则按类型或使用标准顺序进行排序.
更多信息
- NumericalOrder 给出了标准排序的通用替代,其中数字表达式、日期和 Quantity 对象按数值进行处理.
- 对于数值表达式,首先按实部排序,如果实部一样,则按虚部的绝对值排序.
- 把单位兼容的 Quantity 表达式转换成同一单位后,按数值大小进行比较.
- 对于 DateObject 表达式,按 AbsoluteTime 进行比较.
- 对于 TimeObject 表达式,按 AbsoluteTime 进行比较.
- 如果 e1 和 e2 都是数字但无法进行比较,则按数字表达式、量、日期和时间的顺序进行排序.
- 数字表达式始终位于非数字表达式之前.
- 如果 e1 和 e2 都不是数值,NumericalOrder[e1,e2] 与 Order[e1,e2] 一致.
- NumericalOrder 使用所有可用的有效数字比较非精确的数字. 与 Equal 不同,它不允许任何额外的容差.
- 可以在诸如 Sort、OrderedQ 或 Ordering 这样的函数中使用 NumericalOrder 作为排序函数.
范例
打开所有单元关闭所有单元范围 (6)
用 AbsoluteTime 来比较 DateObject 表达式:
用 NumericalOrder 作为排序函数:
属性和关系 (8)
对于值不同的数值表达式,NumericalOrder 用数值对它们进行比较:
Order 总是从结构上对表达式进行比较,可能会给出不同的结果:
和 Order 一样,NumericalOrder 是表达式的反对称函数:NumericalOrder[e1,e2]==-NumericalOrder[e2,e1]:
与 Order 不同,对于不相同的 e1、e2,NumericalOrder[e1,e2] 可能会返回零:
对于可比表达式 e1、e2,结果 NumericalOrder[e1,e2]0 意味着 e1-e2==0:
NumericalOrder 使用所有可用的有效数字比较非精确的数字:
对于机器精度的数字,Less、Equal、Greater 等采用 7 位容差:
对于复值,NumericalOrder 按其实部进行比较,然后按虚部的绝对值进行比较:
这与 Order 的结果一致:
等价的量的 NumericalOrder 为 0:
用 Equal 显示它们实际上是等价的量:
对于非数值表达式 e1、e2,NumericalOrder 与 Order 一致:
可能存在的问题 (1)
用 NumericalOrder 排序不能保证同一数字的不同表示的特定顺序:
对 NumericalOrder 给出 0 的情况,可以通过使用 Order 定义更严格的顺序来解决:
文本
Wolfram Research (2017),NumericalOrder,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NumericalOrder.html.
CMS
Wolfram 语言. 2017. "NumericalOrder." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/NumericalOrder.html.
APA
Wolfram 语言. (2017). NumericalOrder. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NumericalOrder.html 年