Tall

From Apache OpenOffice Wiki
Jump to: navigation, search


Prosessoren i maskinen driver egentlig aritmetikk med tall. Alle andre datatyper er indirekte tallbehandling. En skiller mellom heltall (uten desimaler) og desimaltall. Regning med heltall er meget raskt. Desimaltall-regning er vanskeligere, og de fleste maskiner har egen prosessor som regner med desimaltallene.

Heltall

To typer heltall er Integer (to byte, 16 bit) og Long (fire byte, 32 bit). Med Integer som datatype kan en variabel ha verdier mellom -32768 og 32767. De deklareres som:

Dim inntekt As Integer
Dim ansiennitet%                         ' hurtig Integer
Dim antSekunderSidenStiklestad as Long
Dim antStjerner_iRommet&                 ' hurtig Long

De to ekstra byte i Long gir heltalls-verdier mellom –2147483648 and 2147483647.

Desimaltall

To typer desimaltall er Single (4 byte) og Double (8 byte). Med Single kan et data ha verdier mellom pluss/minus3.402823 x 1038 og 1.401298 x 10-45. Med Double er verdirommet pluss/minus 1.79769313486232 x 10308 til 4.94065645841247 x 10-324. Desimaltall deklareres eksplisitt som i:

Dim skatt as Single
Dim investeringsRate!   ' hurtig Single
Dim plancksKonstant as Double
Dim boltzmannsKonstant# ' hurtig Double

Vanlig kontorautomasjon krever sjelden den presisjon Double gir. Innen meterologi og diverse vitenskapelige beregninger vil Single gi for liten presisjon.

En spesiell datatype i Apache OpenOffice Basic er Currency. Den bruker 8 byte (64 bit) men lar det bare bli fire siffer i desimalene. Heltallsdelen kan vise opp til femten siffer. Mulige verdier er mellom -922337203685477.5808 and +922337203685477.5807. Deklarasjon skjer eksplisitt med

Dim utbetalt as Currency
Dim innbetalt@            ' hurtig Currency

Datatypen Currency brukes mest i administrative program.

Documentation caution.png Datatypen Currency kan behandles feil av Apache OpenOffice Basic. Issue 31001 Issue 54049 Issue 91121 Issue 107277 er fremdeles ikke rettet i Apache OpenOffice version 3.1.1.

De 32 (eller 64) bit i et desimaltall deles opp i heltallsdel og desimaldel. Single og Double har flytende desimalpunkt. Heltallsdelen lages så liten som mulig. Resten gis til desimaldelen slik at presisjonen blir maksimal.

Er en i tvil om hvilken type som skal brukes, kan en angi Float og bli tildelt den typen som er mest egnet.

Dim temperatur As Float

Tallangivelse

Tall kan angis som heltall (uten desimaler), med desimaler og i vitenskapelig notasjon. Negative tall skal ha minustegn foran. Plusstegn er ikke krevet, men kan angis (blanke tolereres, men kan forvirre):

Dim A As Integer
Dim B As Float
A = + 121
B = -243.33

I USA er punktum (.) desimaltegnet, mens Norge og mange andre land bruker komma (,). Dette skaper endel forvirring. Hvis et desimaltall tilordnes et heltall, vil desimaltallene forsvinne ved avrunding.

I vitenskaplig notasjon skrives aEb som betyr at tallet a skal ganges med 10b. For eksempel 1.5e-10 er 1.5 x 10-10 (0.00000000015). Bokstaven "e" eller "E" angir eksponsiering. Koeffisienten "a" er et desimaltall eller et heltall. Eksponenten "b" er et heltall. Noen eksempler:

Dim A As Double

A = 1.43E2    ' grei
A = + 1.43E2  ' grei (koeffisienten er 1.43) 
A = - 1.43E2  ' grei (koeffisienten er -1.43)
A = 1.43E-2   ' grei (negativ eksponent)
A = 1.43E -2  ' feil?  Blank foran eksponent - tolkes som 1.43E0 - 2
A = 1,43E-2   ' feil (komma er ikke desimaltegn)
A = 1.43E2.2  ' feil?  Eksponent er ikke heltall - tolkes som 1.43E2

Bare en av feilene vil av interpreter gi feilmelding. De to andre feilene er mulige logiske feil, iallefall vil ikke interpreter oppdage de (se tolkingen).

Heksadesimale og oktale tegn

Vi er vant til desimale tall der mulige tegn er 0 til 9. Det heksadesimale har 16 mulige tegn, 0-9 og A-F og kan lagres med 4 bit i minnet. Det oktale har 8 mulige tegn, 0-7 og kan lagres med 3 bit i minnet. Tall som er prefixed med &H oppfattes heksadesimalt, mens prefixet &O oppfattes oktalt.

Dim A As Long
A = &HFF ' Heksadesimal verdi FF, tilsvarer 255 desimalt
A = &O10 ' Oktal verdi 10, tilsvarer 8 desimalt


Content on this page is licensed under the Public Documentation License (PDL).



Personal tools