Hopp til innhold

Hjelp:Utregning

Fra Wikipedia, den frie encyklopedi
De numeriske resultatenes nøyaktighet og format varierer med serveren. For tiden (2014) ser resultatene produsert av Wikimedia servere ut til å være uniforme.

Funksjonene #expr: og #ifexpr: i MediaWiki-utvidelsen ParserFunctions evaluerer numeriske uttrykk, og også boolske uttrykk som involverer tall og boolske verdier (ikke strenger). Syntaksen er

{{ #expr: uttrykk }}

Mellomrom trengs ikke, bortsett fra mellom ord (for operatorer og konstanter). Inni tallene er ingen gruppeseparator (mellomrom, kommaer, apostrofer) tillatt, den eneste desimalseparatoren som støttes er punktum, og for tiden (2014) er europeiske desimalsifre 0-9 de eneste som støttes.

Vær forsiktig når magiske ord brukes for dato- og tidselementer i utregningsuttrykk innbakt i maler, slik som {{CURRENTHOUR}} ettersom returverdien kan bli formatert annerledes på oversatte sider og vil ødelegge uttrykk (bruk isteden parserfunksjonen #time med passende xg flagg før hvert formateringselement). Lignende feil vil oppstå med noen andre magiske ord som returnerer kvantiteter (pass på å ta med det passende "råformateringsflagget").

Et uttrykk er en streng som representerer en trestruktur med type/verdi-par som noder, med binære operatorer i infixnotasjon, unære operatorer i prefiksnotasjon, og sluttnoder representert ved tall og konstanter. Bokstaver i operatorer og navn på konstanter er case-insensitive.

Programvaren ParserFunctions bestemmer hvilke operatorer og konstanter, og hvilke tall som støttes. Bokstaven e i vitenskapelig notasjon og et talls fortegn behandles som operatorer, de støttede tallene er tall uten fortegn i ordinært desimalformat. Programvaren ParserFunctions bestemmer også presedensen av operatorer og feilmeldinger, og den konverterer alle tall til flyttall.

For øvrig definerer ParserFunctions bare operatorer når det gjelder PHP-funksjoner og operatorer, og en hvilken som helst konvertering og eiendommelighet knyttet til operatorene er egenskaper ved disse PHP-funksjonene og selve operatorene. Resultatets format er dessuten fullstendig bestemt av PHP.

Datatypene er PHP-datatypene float (flyttall med dobbelt presisjon) og integer (64-bit heltall). Området for integertypen er fra -(2^63) = −9 223 372 036 854 776 000 til 2^63 - 1 = 9 223 372 036 854 776 000. Typen float tillater brøker og meget store tall, men alle integerverdier kan representeres eksakt som float bare i området -(2^53) = −9 007 199 254 740 992 til (2^53) = 9 007 199 254 740 992 (se Hjelp:Utregningsnøyaktighet).

Dynamisk typing anvendes. Sluttnodene er alle av typen float (som nevnt, tall konverteres til float; dette gjelder til og med for tall med integerverdi og -format. Datatypen for resultatet av en operasjon avhenger av operatoren, og for noen operatorer avhenger den av argumentenes typer, og i noen tilfeller av verdiene deres. Hvis resultatet ifølge disse reglene er av typen float, blir et hvilket som helst argument av typen integer konvertert til float før operasjonen, og resulatet rundes også av til float:

  • {{numfh|(trunc2^trunc62+trunc512)-2^62}}Mal:Numfh
  • {{numfh|(trunc2^trunc62+trunc512)+(trunc2^trunc62+trunc1535)}}Mal:Numfh
  • {{numfh|2^63+2047}}Mal:Numfh

Bortsett fra det blir en numerisk verdi utenfor integerområdet konvertert til float, unntatt i tilfellet med trunc (og mod, som involverer anvendelse av trunc på argumentene først).

Der er 31 operatorer (bortsett fra to synonymer), to konstanter, og tallene uten fortegn i ordinær desimalnotasjon.

( og ) (parenteser)

Operatorer

[rediger | rediger kilde]

+ - * (ganger) / (delt på) ^ (opphøyd i) div mod round

Logiske operatorer

[rediger | rediger kilde]

= != <> > < >= <= and or

Funksjoner

[rediger | rediger kilde]

not ceil trunc floor abs exp ln sin cos tan acos asin atan

Enkle eksempler

[rediger | rediger kilde]

{{#expr:2+2}}

Returnerer 4

{{#expr:8*8}}

Returnerer 64