NumericalOrder[e1,e2]
如果 e1<e2,给出 1,如果 e1>e2,给出 -1,如果 e1 和 e2 数值上相等,则给出 0,如果 e1 和 e2 在数值上不具有可比性,则按类型或使用标准顺序进行排序.
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 作为排序函数.
范例
打开所有单元 关闭所有单元基本范例 (4)
NumericalOrder[3 / 2, 1]NumericalOrder[3 / 2, 1.5]NumericalOrder[Pi, E ^ 2]Order[Pi, E ^ 2]NumericalOrder[Quantity[1, "Meters"], Quantity[3, "Feet"]]NumericalOrder[Now, Tomorrow]范围 (6)
NumericalOrder[Gamma[7 / 3], Sqrt[2]]N[{Gamma[7 / 3], Sqrt[2]}]NumericalOrder[-Infinity, GoldenRatio]NumericalOrder[Infinity, 0]NumericalOrder[Exp[I], Sin[1]]NumericalOrder[Exp[I], Cos[1] - 10I]{q1 = Quantity[2., "Pounds"], q2 = Quantity[1., "Kilograms"]}NumericalOrder[q1, q2]NumericalOrder[QuantityMagnitude[q1, "Kilograms"], QuantityMagnitude[q2, "Kilograms"]]用 AbsoluteTime 来比较 DateObject 表达式:
{d1 = Now, d2 = DateObject[{2000, 1, 1, 12, 0, 0}]}NumericalOrder[d1, d2]NumericalOrder[AbsoluteTime[d1], AbsoluteTime[d2]]用 NumericalOrder 作为排序函数:
list = {7, 2 / 3, Infinity, Pi, -E, 0, -Infinity}slist = Sort[list, NumericalOrder]Ordering[list, All, NumericalOrder]slist === list[[%]]OrderedQ[slist]OrderedQ[slist, NumericalOrder]应用 (1)
属性和关系 (8)
对于值不同的数值表达式,NumericalOrder 用数值对它们进行比较:
NumericalOrder[6, Pi]NumericalOrder[6, N[Pi]]Order 总是从结构上对表达式进行比较,可能会给出不同的结果:
Order[6, Pi]和 Order 一样,NumericalOrder 是表达式的反对称函数:NumericalOrder[e1,e2]==-NumericalOrder[e2,e1]:
e1 = Sqrt[2] + 5;
e2 = E + Pi;NumericalOrder[e1, e2]NumericalOrder[e2, e1]与 Order 不同,对于不相同的 e1、e2,NumericalOrder[e1,e2] 可能会返回零:
e1 = 1 / 2;
e2 = 0.5;NumericalOrder[e1, e2]Order[e1, e2]对于可比表达式 e1、e2,结果 NumericalOrder[e1,e2]0 意味着 e1-e2==0:
NumericalOrder[Pi, N[Pi]]Pi - N[Pi] == 0NumericalOrder 使用所有可用的有效数字比较非精确的数字:
NumericalOrder[1., 1. + $MachineEpsilon]NumericalOrder[1., 1. + $MachineEpsilon / 2]对于机器精度的数字,Less、Equal、Greater 等采用 7 位容差:
Less[1., 1. + 2 ^ 7$MachineEpsilon]Less[1., 1. + 2 ^ 6$MachineEpsilon]NumericalOrder[1.`10, 1.`10 + 10 ^ -10]NumericalOrder[1.`10, 1.`10 + 10 ^ -10 / 2]对于复值,NumericalOrder 按其实部进行比较,然后按虚部的绝对值进行比较:
NumericalOrder[1 + I, 1 - 2 I]这与 Order 的结果一致:
Order[1 + I, 1 - 2 I]1 + I < 1 - 2I等价的量的 NumericalOrder 为 0:
{q1 = Quantity[60, "Seconds"], q2 = Quantity[1, "Minute"]}NumericalOrder[q1, q2]Order[q1, q2]用 Equal 显示它们实际上是等价的量:
q1 == q2对于非数值表达式 e1、e2,NumericalOrder 与 Order 一致:
NumericalOrder[foo, bar]Order[foo, bar]可能存在的问题 (1)
用 NumericalOrder 排序不能保证同一数字的不同表示的特定顺序:
list = {Pi, N[3, $MachinePrecision], N[Pi], 3, E, 3., N[E, 27], N[3, 20]}slist = Sort[list, NumericalOrder]plist = RandomSample[list];slist === Sort[plist, NumericalOrder]Sort[list]% === Sort[plist]对 NumericalOrder 给出 0 的情况,可以通过使用 Order 定义更严格的顺序来解决:
strictNumericalOrder[e1_, e2_] := With[{no = NumericalOrder[e1, e2]}, If[no == 0, Order[e1, e2], no]]Sort[list, strictNumericalOrder]% === Sort[plist, strictNumericalOrder]文本
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 年
BibTeX
@misc{reference.wolfram_2026_numericalorder, author="Wolfram Research", title="{NumericalOrder}", year="2017", howpublished="\url{https://reference.wolfram.com/language/ref/NumericalOrder.html}", note=[Accessed: 05-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_numericalorder, organization={Wolfram Research}, title={NumericalOrder}, year={2017}, url={https://reference.wolfram.com/language/ref/NumericalOrder.html}, note=[Accessed: 05-September-2026]}