Wikipedia:Lua/Modul/FormatNum/de
Vorlagenprogrammierung | Diskussionen | Lua | Test | Unterseiten | |||
---|---|---|---|---|---|---|---|
Modul | Deutsch | English
|
Modul: | Dokumentation |
FormatNum
– zum Runden und Formatieren von Zahlen. Es stehen verschiedene Rundungs- und Formatierungsvarianten zur Verfügung.
Funktionen für Vorlagen
[Quelltext bearbeiten]format
[Quelltext bearbeiten]Diese Funktion formatiert eine Zahl entsprechend des angegebenen Formats. Zur Eingabe sind alle Zahlen geeignet, die als Dezimaltrennzeichen den Punkt verwenden, keine Tausendertrennzeichen haben und nicht in Exponentialschreibweise vorliegen. Zahlen, die von numberToString
zurückgegeben wurden, erfüllen die Kriterien stets.
Parameter
- 1
- Pflichtparameter.
- Bisher unformatierte (aber ggf. gerundete) Gleitkomma- oder Ganzzahl.
- number
- DEPRECATED für 1.
- format
- Optional; Vorgabe:
dewiki
- Einer der zur Verfügung stehenden Formatierungsoptionen. Momentan sind das
at
,ch
,ch_currency
,comma
,de
,dewiki
,de_currency
,en
,iso31_0
,iso31_0_point
andpc
.
Rückgabewert
- Formatierte Zahl. Sollte ein ungültiges Argument für format angegeben werden oder es sich bei 1 nicht um eine gültige Zahl handeln, so wird 1 unverändert zurückgegeben.
round
[Quelltext bearbeiten]Diese Funktion wird zum Runden von Zahlen verwendet. Die Ausgabe ist ein String mit der entsprechenden Anzahl signifikanter Stellen. Zur Eingabe sind alle Zahlen geeignet, die sich mit der Lua-Methode tonumber()
parsen lassen.
Parameter
- 1
- Pflichtparameter.
- Zu rundende Gleitkomma- oder Ganzzahl. Die Zahl muss im PC-lesbaren Format (Punkt als Dezimaltrennzeichen, keine Tausendertrennzeichen) sein, so dass sie mittels
tonumber()
umwandelbar ist. - number
- DEPRECATED für 1.
- precision
- Ganze Zahl (wird mittels
tonumber()
umgewandelt), die die Anzahl signifikanter Stellen angibt. Ist diese Zahl nicht-negativ, so handelt es sich um die Nachkommastellen. Sollte diese Zahl negativ sein, so wird der ganzzahlige Anteil der Zahl ebenfalls gerundet (-1 entspricht Rundung auf volle Zehner, -2 auf volle Hunderter, …). - method
- String einer ganzen Zahl (wird mittels tonumber() umgewandelt), welcher die zu verwendende Rundungsmethode beschreibt.
0
– Rundung nach IEEE 754 (round half to even).1
– Kaufmännisches Runden inklusive Eliminierung von "-0"-Ergebnissen.
Rückgabewert
- String der entsprechend der Rundungsmethode auf die gegebene Anzahl signifikanter Stellen gerundeten Zahl, wie von der Lua-Funktion
string.format()
zurückgeliefert (PC-kompatible Schreibweise ohne Formatierung). Diese kann mit der FunktionformatNumber
weiter formatiert werden. Sollte sich eines der übergebenen Argumente nicht parsen lassen, so wird der String des Arguments number unverändert zurückgegeben.
formatNumber
[Quelltext bearbeiten]DEPRECATED – ursprünglicher Name zu neu: #format
numberToString
[Quelltext bearbeiten]DEPRECATED – ursprünglicher Name zu neu: #round
Formatierungsoptionen
[Quelltext bearbeiten]Format | Dezimal- trenn- zeichen |
Tausender- trennzeichen (TTZ) |
TTZ ab Länge |
TTZ nur Ganzzahl- teil |
Beispiele | |
---|---|---|---|---|---|---|
de | , | U+202F ( ) |
5* | nein | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 |
de_currency ch_currency dewiki |
, | . | 5 | ja | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 |
ch | , | ' | 5 | ja | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 |
en | . | , | 4 | ja | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 |
iso31_0 at |
, | U+202F ( ) |
4 | nein | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 |
iso31_0_point | . | U+202F ( ) |
4 | nein | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 |
pc | . | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 | |||
comma | , | 123,456 1.234,567 12.345,678 1.234,567.8 12.345,567.8 |
-123,456 -1.234,567 -12.345,678 -1.234,567.8 -12.345,567.8 |
*Da das Tausendertrennzeichen auch für den Nachkommaanteil gilt, findet die Länge 5 nur Beachtung, wenn ein Nachkommaanteil mit maximal 3 Stellen existiert. Bei 4 oder mehr Stellen Nachkommaanteil wird der Ganzzahlanteil auch mit nur 4 Stellen unterteilt.
Funktionen für Lua-Module
[Quelltext bearbeiten]Einbindung über require()
:
local lucky, FormatNum = pcall( require, "Module:FormatNum" )
if type( FormatNum ) == "table" then
FormatNum = FormatNum.FormatNum()
else
-- Fehlerfall; FormatNum enthält Fehlermeldung
return "<span class='error'>" .. FormatNum .. "</span>"
end
- FormatNum.format(source, spec)
-
- source: string
- spec: optional string
- FormatNum.round(source, precision, method)
-
- source: string
- precision: number
- method: number
- FormatNum()
- Liefert table mit dem Zugriff auf die Funktionen (siehe oben).
Interna
[Quelltext bearbeiten]ROUND_TO_EVEN
[Quelltext bearbeiten]Interne Konstante für Rundung nach IEEE 754 (0).
ROUND_AWAY_FROM_ZERO
[Quelltext bearbeiten]Interne Konstante für kaufmännische Rundung (1).
FORMAT_TABLE
[Quelltext bearbeiten]Diese interne Tabelle enthält die Formatierungsoptionen entsprechend obiger Aufstellung. Für jede Formatierung existieren die Einträge decimalMark
(Dezimaltrennzeichen), groupMark
(Tausendertrennzeichen), groupMinLength
(Länge des Ganzzahlanteils, ab dem das Tausendertrennzeichen zur Anwendung kommt) und groupOnlyIntegerPart
(ob nur der Ganzzahlanteil gruppiert wird).
Die Tabelle für die Formatierung pc
sollte nicht definiert sein (dadurch wird ein Abbruch erreicht und die Zahl direkt unverändert zurückgegeben).
DIGIT_GROUPING_SIZE
[Quelltext bearbeiten]Interne Konstante, die die Anzahl der Ziffern pro Gruppe angibt (3).
internalNumberToString()
[Quelltext bearbeiten]Von round
intern aufgerufene Funktion zur Rundung. Beim Aufruf sind sämtliche Parameter bereits im numerischen Format.
internalFormatNumber()
[Quelltext bearbeiten]Von format
intern aufgerufenen Funktion zur Formatierung. Die zu formatierende Zahl ist hier bereits auf Gültigkeit geprüft und ohne Vorzeichen (wird hinterher rekonstruiert). Statt einer allgemeinen Formatierungsoption werden hier die der Formatierung entsprechenden Einzelwerte aus FORMAT_TABLE übergeben.
Entwicklung
[Quelltext bearbeiten]Dies war das erste produktiv eingesetzte Modul in der deutschsprachigen Wikipedia. In der Pionierphase war Vieles im Umgang mit Lua noch unklar gewesen. Inzwischen sind die Erkenntnisse gewachsen, und eine Restrukturierung wurde erforderlich.
- Die Basisfunktionen werden jetzt auch als Bibliothek direkt für andere Lua-Module verfügbar gemacht.
- Die Basisfunktionen blieben unverändert.
- Parameterwerte erhielten Defaults und kürzere Namen; auch für die beiden Funktionen.
Mehr kosmetischer Natur:
- Der Präfix internal ist nicht mehr erforderlich.
- Durch das
local
in der Definition wird das bereits zum Ausdruck gebracht. Globale Namen, die in Konflikt treten, gibt es nicht oder würde es langfristig nicht mehr geben; falls doch noch, würde dieseslocal
sie zuverlässig überdecken.
- Durch das
- Die Funktionsnamen sind deutlich kürzer.
- Es müssen nur zwei Funktionsnamen voneinander unterschieden werden. Globale Auswirkungen haben sie nicht.
- Die zwingend erforderliche Zahl als erster Parameter darf und soll zukünftig unbenannter Parameter sein.
- frame wird nicht mehr dokumentiert.
- Für Vorlagenprogrammierer ist diese Information völlig irrelevant; sie können nur die Argumente sehen.
- Auch ansonsten ist es keine Neuigkeit und bei sämtlichen Schnittstellen zu Vorlagen/#invoke identisch.
- Alle angegebenen Parameter von #invoke führen zu Zeichenketten; „String“ muss nicht erwähnt werden. Vorlagenprogrammierer können sowieso nichts anderes unternehmen.
- Bei einzeiligen oder kurzen Kommentaren wurden die potentiell mehrzeiligen Kommentarblöcke reduziert.
- Tabs wurden auf Wiki-Standard 4SPC gesetzt.
Verwendung
[Quelltext bearbeiten]Allgemein in beliebigen Vorlagen direkt nutzbar.
- Vorlage:FormatNum
- Unterstützung für Kategorie:Vorlage:Zahlenformatierung
Abhängigkeiten
[Quelltext bearbeiten]Keine.