模板:Number table sorting

被永久保护的模板
维基百科,自由的百科全书
文档图示 模板文档[查看] [编辑] [历史] [清除缓存]

This template can be useful when building a sortable table in which a column contains both numbers and text. This template should be applied to every number in the column and should not be used outside of sortable tables.

Currently, the template works for numbers between −10308 and 10308. Numbers outside this range will sort above or below other numbers depending on sign. See the Limitations section below.

By default the output is displayed using thousands separators. To display numbers as entered, use |format=no.

The template generates a hidden "sort key" in the HTML markup which forces the JavaScript sorting algorithm to sort the column alphabetically.

概要

在两种情况下,此模板可适用:

  1. 当数字后有一些文字
  2. 当数字前面带有货币符号以外的其他文字

参数及使用方法

此模板仅一个参数:不含逗点的实数。以下范例使用了重定向模板{{nts}}:

可选参数
  • prefix:若想在数字前显示文字,请使用|prefix=some prefix
    {{nts|123456789.00123|prefix=approx. }}approx. 123,456,789.00123
  • format:不带逗点输出,请使用|format=no
    {{nts|123456789.00123}}123,456,789.00123
    {{nts|123456789.00123|format=no}}123456789.00123
  • debug:若想显示排序键,请使用|debug=yes
    {{nts|123456789.00123|debug=yes}}7008123456789001230♠123,456,789.00123
    {{nts|-123456789.00123|debug=yes}}2991876543210998770♠−123,456,789.00123

Apart from the added thousands separators the numbers are formatted as supplied (scientific notation or not, leading and trailing zeros, and a zero before the decimal point or not). This formatting does not affect the sorted order except for numbers not satisfying the limitations mentioned below.

以下是该模板的模板数据,适用于可视化编辑器等工具。

Number table sorting模板数据

模板参数[编辑模板数据]

参数描述类型状态
Number1

Your number

数字必需
Format output?format

If you do not wish the output to be formatted (i.e. separated by thousand separators), please put "no" in this field. (Without quotation marks.)

字符串可选
Debugdebug

If set to "yes", forces output to include debug data

字符串可选
Prefixprefix

The prefix to be displayed before the number. E.g. "Approx." or "$"

字符串可选

排序键

The sort key is a nineteen-digit number. For numbers within range the first four digits are determined by the number's sign and order of magnitude and the next fifteen digits are determined by the number's sign and significand.

Numbers within range
  • For numbers between 10−308 and 10308 the first four digits are calculated by adding 7000 to the order of magnitude and the next fifteen digits are calculated by multiplying the significand by 1014.
  • For numbers between −10−308 and −10308 the first four digits are calculated by subtracting the order of magnitude from 2999 and the next fifteen digits are calculated by subtracting the significand from 10 multiplying the difference by 1014.
  • The sort key for 0 is 5000000000000000000.
Numbers out of range
  • Numbers larger than 10308 are assigned the sort key 9000000000000000000.
  • Numbers smaller than −10308 are assigned the sort key 1000000000000000000.
  • Numbers between 10−308 and 0 or between 0 and −10−308 are assigned the sort key 5000000000000000000.

注意事项

  • Any subset of numbers larger than 10308 are sorted together.
  • Any subset of numbers smaller than −10308 are sorted together.
  • Any subset of numbers between 10−308 and −10−308 are sorted together.
  • If a non-numeric value is given as the first unnamed parameter the results are undefined.
  • The hyphen minus sign is converted into a true minus sign; note, though, that this means no more than 12 significant figures are possible.
  • A prefix (using the prefix parameter) does not affect the sort order.

范例

{{nts|123456789.00123}}7008123456789001230♠123,456,789.00123

For text which follows a number, {{nts|123,456}} as of 2012 displays 123,456 as of 2012 with a numerical sort key of 123456. This forces numerical sorting in the cell using this value instead of the default alphabetical sorting.

Below are more examples, some of which illustrate the limitations listed above.

代码 排序键和数字 错误
{{nts|debug=yes}} 1000000000000000000♠
{{nts||debug=yes}} 1000000000000000000♠
{{nts|2和3之間|debug=yes}} 1000000000000000000♠2和3之间
{{nts|2和3之間|debug=no}} 2和3之间
{{nts|10|prefix=約|debug=yes}} 7001100000000000000♠约10
{{nts|-5|debug=yes}} 2999500000000000000♠−5
{{nts|-4|debug=yes}} 2999600000000000000♠−4
{{nts|-73|debug=yes}} 2998270000000000000♠−73
{{nts|-67|debug=yes}} 2998330000000000000♠−67
{{nts|-20345678901234567.12345678|debug=yes}} 2983796543210987654♠−2.0345678901235×10^16
{{nts|123.456e3|debug=yes}} 7005123456000000000♠123,456
{{nts|123.456e2|debug=yes}} 7004123456000000000♠12,345.6
{{nts|20345678901234567.12345678|debug=yes}} 7016203456789012345♠2.0345678901235×10^16
{{nts|100345678901234567.12345678|debug=yes}} 7017100345678901234♠1.0034567890123×10^17
{{nts|1234567890123456.12345678|debug=yes}} 7015123456789012345♠1.2345678901235×10^15
{{nts|234567890123456.12345678|debug=yes}} 7014234567890123456♠2.3456789012346×10^14
{{nts|34567890123456.12345678|debug=yes}} 7013345678901234561♠3.4567890123456×10^13
{{nts|4567890123456.12345678|debug=yes}} 7012456789012345612♠4.5678901234561×10^12
{{nts|567890123456.12345678|debug=yes}} 7011567890123456123♠5.6789012345612×10^11
{{nts|67890123456.12345678|debug=yes}} 7010678901234561234♠6.7890123456123×10^10
{{nts|7890123456.12345678|debug=yes}} 7009789012345612345♠7.8901234561235×10^9
{{nts|890123456.12345678|debug=yes}} 7008890123456123456♠890,123,456.12346000
{{nts|90123456.12345678|debug=yes}} 7007901234561234567♠90,123,456.12345700
{{nts|0123456.12345678|debug=yes}} 7005123456123456780♠123,456.12345678
{{nts|123456.12345678|debug=yes}} 7005123456123456780♠123,456.12345678
{{nts|23456.12345678|debug=yes}} 7004234561234567799♠23,456.12345678
{{nts|3456.12345678|debug=yes}} 7003345612345678000♠3,456.12345678
{{nts|456.12345678|debug=yes}} 7002456123456780000♠456.12345678
{{nts|56.12345678|debug=yes}} 7001561234567800000♠56.12345678
{{nts|6.12345678|debug=yes}} 7000612345678000000♠6.12345678
{{nts|.12345678|debug=yes}} 6999123456780000000♠0.12345678
{{nts|0.12345678|debug=yes}} 6999123456780000000♠0.12345678
{{nts|0.02345678|debug=yes}} 6998234567800000000♠0.02345678
{{nts|0.00345678|debug=yes}} 6997345678000000000♠0.00345678
{{nts|0.00045678|debug=yes}} 6996456780000000000♠0.00045678
{{nts|0.00005678|debug=yes}} 6995567800000000000♠5.678×10^−5
{{nts|0.00000678|debug=yes}} 6994678000000000000♠6.78×10^−6
{{nts|0.00000078|debug=yes}} 6993780000000000000♠7.8×10^−7
{{nts|0.00000008|debug=yes}} 6992800000000000000♠8×10^−8
{{nts|.00000008|debug=yes}} 6992800000000000000♠8×10^−8
{{nts|0|debug=yes}} 5000000000000000000♠0

参见