Постоянно защищенный шаблон
Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску
Документация по шаблону [ просмотреть ] [ изменить ] [ история ] [ очистить ]


Шаблон: Точность определяет точность ( в качестве счетчика десятичных цифр) на любую сумму, большой или отрицательном, с использованием быстрого алгоритма. Он также может обрабатывать конечную десятичную точку (например, «15.» или «-41.») Или конечные нули (например, «15.34000» с точностью до 5 десятичных цифр). При дробном вводе возвращается десятичный логарифм числителя.

Примеры

Известные ошибки

  • Для чисел в экспоненциальном представлении точность обычно возвращается как слишком низкая с точностью до 1 десятичного знака. Пример: {{precision | 7.1234E + 06}} → -2 (точность должна быть равна 4 десятичным цифрам, а не 3).

Технические примечания

  • ПРИМЕЧАНИЕ A1: Этот шаблон определяет точность десятичных знаков путем подсчета длины числовой строки (в #switch, сравнивающем длины заполненных строк), затем вычитания целой длины минус десятичная точка и минус 1, если она отрицательна. Для целых чисел 1 место вычитается за каждый завершающий 0 целого числа. Для дробей любой предыдущий счет очищается x 0, затем возвращается десятичный логарифм знаменателя: (..prior ...) * 0 + (ln denom / ln 10).
  • ПРИМЕЧАНИЕ D2: проверка для целых чисел сравнивает сумму с добавлением «0» в конце: когда сумма является десятичной, тогда значение не изменяется, добавляя 0 в конце: так что 5,23 = 5,230 истинно, тогда как для целые числа, это будет: 5 = 50 как ложь, так как значения становятся n * 10 для целого числа n. Итак, для целого числа n проверка отклоняет: n = n0 как ложное; следовательно, n - целое число.
  • ПРИМЕЧАНИЕ M3: Величина целой части рассчитывается логарифмом минимального значения абсолютного значения ( деленного на натуральный логарифм 10 для корректировки на e = 2,71828 *), как: ln (floor (abs (-0,050067)) +0,99) / ln10 Функция floor (x) обрезает десятичную часть, чтобы оставить все количество: 0-9 дает 0, 10-19 как 1, 1000-1999 как 3. Abs (x) избегает минимума отрицаний, floor (-0,1 ) = -1, следовательно, использование abs (x) гарантирует -0,1 этажа до 0, а не -1. Около нуля +0,99 избегает недопустимого журнала 0, но не округляет десятичные дроби, уже записанные как nnn.00. Сложность составляет 6 операций: нижний предел абс ({1}) +0,99, затем логарифм 10 x (ln x ÷ ln10), затем нижний предел этого логарифмического отношения. Десятичные дроби -1 <x <1 дают -1, исключая логарифм 0,001 = -3.
  • ПРИМЕЧАНИЕ N4: Вложенность if-else и вложенных шаблонов сведена к минимуму из-за ограничения MediaWiki 1.6 в 40 уровней if-логики для всех вложенных шаблонов, используемых вместе. Шаблон {ordomag} был опущен, чтобы избежать еще двух уровней вложенных шаблонов. В шаблоне {Precision} было 8 уровней, а этот шаблон был обрезан только до 5 уровней.
  • ПРИМЕЧАНИЕ S5: #switch запускается с добавлением "x" перед суммой, в противном случае #switch будет сравниваться как числовое, где "2" будет соответствовать "2.0", даже если "2" имеет длину 1, поэтому "x2" больше не совпадает с "x2.0" как нечисловым. #Switch завершит работу при первом совпадении, поэтому сначала сравниваются меньшие длины, чтобы избежать дополнительных сравнений для более редких и длинных числовых строк длиной до 41.
  • ПРИМЕЧАНИЕ W6: при проверке целых чисел с целыми конечными нулями используется типичное n = n / 10 * 10 для каждой степени 10, где совпадают целые миллионы: {{#ifexpr: {1} = floor ({1} / 1E6) * 1E6 | }} Ранее {Precision} пытался использовать "round" для обнаружения конечных нулей, но "round" теряет точность при -5, поэтому n00000 round -5 немного отличается от n00000, и сравнения с точными округленными суммами не соответствовали некоторым числа, когда 6 и более нулей "n000000".
  • ПРИМЕЧАНИЕ Z7: Проверка нуля для любого 0,00000 сравнивает добавление 1 к сумме с добавлением «1» в конце: если сумма является десятичной, то добавление 1 будет больше, чем добавление 1 в конце: 0,00 + 1 > 0,001, тогда как для целого нуля это будет: 0 + 1> 01 как ложь, так как значение такое же. Итак, для целого 0 проверка отклоняет: 0 + 1> 01 как ложное; следовательно, весь 0 является целым числом.

Смотрите также