Nomenclatuur getallen

Het rekenen met grote getallen levert heden ten dage geen grote problemen meer op.
Per slot van rekening zijn er computers en programma's die dat werk doen.
Hoe anders is dat met de naamgeving van grote getallen.

De meeste mensen weten nog wel wat een miljard is, bij triljard wordt het al een stuk lastiger en houdt het bij de meeste mensen op.
Een aantal mensen weet nog wat googel is (dat aantal is vast toegenomen met de komst van Google), en slechts wiskundigen weten wat googelplex is.

Er is echter een keurig systeem om grote getallen te benoemen.

In deze aflevering zal ik uiteenzetten hoe een en ander in zijn werk gaat.

Ook is er een programma en een DLL beschikbaar die grote getallen benoemd.

Tot de tien

We maken gebruik van het tientallig positionele telsysteem.
Dat betekent dat we te maken hebben met tien symbolen en dat de positie van zo'n symbool de waarde bepaalt.

De symbolen zijn: 0, 1, 2, 3, 4, 5, 6, 7, 8 en 9. Deze symbolen noemen we doorgaans cijfers.

Ook hebben ze allemaal een naam: nul, één, twee, drie, vier, vijf, zes, zeven, acht en negen.

Let even op het subtiele verschil tussen de woorden 'cijfer' en 'getal'.
Een 'cijfer' is niets anders dat een symbool en daarvan bestaan er (in het decimale stelsel) tien.
Een 'getal' is een waarde en daar bestaan er oneindig veel van.

Bij getallen van 1 cijfer moet dus uit de context worden opgemaakt of het hier een waarde of een cijfer betreft.

De eerste tien getallen hebben dezelfde naam als de tien cijfers.

Voor de volledigheid is 'tien', '10', de waarde die 1 groter is dan 9.

Tot de honderd

Zoals in de vorige paragraaf gezegd bepaalt de positie van een cijfer zijn waarde.

Kijken we bijvoorbeeld naar het getal 45, dan is de waarde van de '4' 40 (= 10x4 of beter 101x4) omdat de 4 op de 1e positie staat.

Posities zijn van rechts naar links oplopend, beginnend bij 0.

De '5' staat op de nul-de positie en heeft als waarde 5 (= 100x5 = 1x5).

De getallen van 10 tot 20 hebben respectievelijk de volgende namen:

tien, elf, twaalf, dertien, veertien, vijftien, zestien, zeventien, achttien, negentien.

Tien is een gekozen naam. Vanaf 'vijftien' zit er een regelmaat in, nl. vijf plus tien. Dit gaat ook op voor 16 t/m 19.

De getallen 11 t/m 14 zijn om de een of andere reden afwijkend, en moeten ook als uitzondering gezien worden.

Na 19 komt 20 dat we uitspreken als twintig. Van 20 tot 30 gaat het weer regelmatig: 21 is 'één en twintig' en zo door tot 29 dat 'negen en twintig' is.
Vervolgens hebben we voor de volgende tientallen de volgende namen:

30 - dertig
40 - veertig
50 - vijftig
60 - zestig
70 - zeventig
80 - tachtig
90 - negentig

De tussenliggende getallen worden op dezelfde manier gemaakt als die tussen de 20 en de 30.

Tot de duizend

Na 99, 'negen en negentig', komt er wat regelmaat in het systeem.

Het eerst volgende getal is 100 en wordt 'honderd' genoemd.

Hierna heeft ieder volgend getal dezelfde naam als de getallen tot 100 voorafgegaan door het woord 'honderd'.

Zo is dus 123 'honderd drie en twintig'.

Ook zit er regelmaat in de benaming van de honderdtallen:

100 - honderd
200 - twee honderd
300 - drie honderd
...
800 - acht honderd
900 - negen honderd

En hiermee kunnen we dus alle getallen tot 1000 benoemen.

Tot de miljoen

Het eerst volgende getal boven de 999 is 1000 en noemen we 'duizend'.

En nu wordt het erg regelmatig.

Ieder getal van 1.000 tot 1.000.000 kan worden samengesteld door de combinatie van alle getallen tot 1.000.

Het deel voor de 2e positie wordt gevolgd door het woord 'duizend', het getal rechts vanaf de 2e positie heeft gewoon de 'honderd'-naam.

Wat voorbeeldjes:

123.456 = honderd drie en twintig duizend vier honderd zes en vijftig.

87.023 = zeven en tachtig duizend drie en twintig.

En zo kunnen we dus al tot 1.000.000 tellen.

Blokjes van 3

In een getal mogen we tussen elke drie cijfers vanaf rechts gerekend een punt zetten.

We krijgen dan een serie blokjes van 3 cijfers. De punt noemen we toepasselijk de duizendscheider.

Het meest rechtse blokje van 3 noemen we het 0e blokje.

In het voorafgaande hebben we nu dus de eerste 2 blokjes van een naam voorzien.

Hieronder volgt nu een opsomming van de volgende blokjes:

Blokje Naam Vanaf Tot
3 miljoen 1.000.000 1.000.000.000
4 miljard 1.000.000.000 1.000.000.000.000
5 biljoen 1.000.000.000.000 1.000.000.000.000.000
6 biljard 1.000.000.000.000.000 1.000.000.000.000.000.000
7 triljoen 1.000.000.000.000.000.000 1.000.000.000.000.000.000.000
8 triljard 1.000.000.000.000.000.000.000 1.000.000.000.000.000.000.000.000











Het systeem is nu verder gelijk aan dat van "Tot de miljoen", dus na elk ne blokje komt de Naam gevolgd door de rest.

Een paar voorbeeldjes:

654.321.954.023 = zeshonderd vierenvijftig miljard driehonderd eenentwintig miljoen negenhonderd vierenvijftig duizend drieëntwintig

5.698.547.691.203.651.651.557 = vijf triljard zeshonderd achtennegentig triljoen vijfhonderd zevenenveertig biljard zeshonderd eenennegentig biljoen tweehonderd drie miljard zeshonderd eenenvijftig miljoen zeshonderd eenenvijftig duizend vijfhonderd zevenenvijftig

De oplettende, zelfdenkende lezer kan nu opmerken dat we de "jarden" eigenlijk helemaal niet nodig hebben.

We hadden 'honderd miljard' ook rustig 'honderd duizend miljoen' kunnen noemen.

En dat is precies wat we hierna gaan doen.

Blokjes van 6

De kennis van de meeste mensen is hier tot een einde gekomen.

Want hoe noemen we het getal na 999.999.999.999.999.999.999.999?

Ik zal het antwoord vast verklappen: één quadriljoen!

En vanaf hier gaan we verder met blokjes van 6, wederom vanaf rechts geteld.

Blokje Naam
0 t/m 3 zie hierboven
4 quadriljoen
5 quintiljoen
6 sextiljoen
7 septiljoen
8 octiljoen
9 noniljoen
10 deciljoen
11 undeciljoen
12 duodeciljoen
13 tredeciljoen
14 quattuordeciljoen
15 quinquadeciljoen
16 sedeciljoen
17 septendeciljoen
18 octodeciljoen
19 novendeciljoen
20 vigintiljoen
21 unvigintiljoen
22 duovigintiljoen
23 tresvigintiljoen
24 quattuorvigintiljoen
25 quinquavigintiljoen
26 sesvigintiljoen
27 septemvigintiljoen
28 octovigintiljoen
29 novemvigintiljoen
30 trigintiljoen
31 untrigintiljoen
32 duotrigintiljoen
33 trestrigintiljoen
34 quattuortrigintiljoen
35 quinquatrigintiljoen
36 sestrigintiljoen
37 septentrigintiljoen
38 octotrigintiljoen
39 noventrigintiljoen
40 quadragintiljoen
41 unquadragintiljoen
42 duoquadragintiljoen
43 tresquadragintiljoen
44 quattuorquadragintiljoen
45 quinquaquadragintiljoen
46 sesquadragintiljoen
47 septenquadragintiljoen
48 octoquadragintiljoen
49 novenquadragintiljoen
50 quinquagintiljoen
51 unquinquagintiljoen
52 duoquinquagintiljoen
53 tresquinquagintiljoen
54 quattuorquinquagintiljoen
55 quinquaquinquagintiljoen
56 sesquinquagintiljoen
57 septenquinquagintiljoen
58 octoquinquagintiljoen
59 novenquinquagintiljoen
60 sexagintiljoen
61 unsexagintiljoen
62 duosexagintiljoen
63 tresexagintiljoen
64 quattuorsexagintiljoen
65 quinquasexagintiljoen
66 sesexagintiljoen
67 septensexagintiljoen
68 octosexagintiljoen
69 novensexagintiljoen
70 septuagintiljoen
71 unseptuagintiljoen
72 duoseptuagintiljoen
73 treseptuagintiljoen
74 quattuorseptuagintiljoen
75 quinquaseptuagintiljoen
76 seseptuagintiljoen
77 septenseptuagintiljoen
78 octoseptuagintiljoen
79 novenseptuagintiljoen
80 octogintiljoen
81 unoctogintiljoen
82 duooctogintiljoen
83 tresoctogintiljoen
84 quattuoroctogintiljoen
85 quinquaoctogintiljoen
86 sexoctogintiljoen
87 septemoctogintiljoen
88 octooctogintiljoen
89 novemoctogintiljoen
90 nonagintiljoen
91 unnonagintiljoen
92 duononagintiljoen
93 trenonagintiljoen
94 quattuornonagintiljoen
95 quinquanonagintiljoen
96 senonagintiljoen
97 septenonagintiljoen
98 octononagintiljoen
99 novenonagintiljoen




En hiermee kunnen we ieder getal tot een grootte van 600! cijfers een naam geven.

Dit moet toch ruim voldoende zijn.

Weet u nu trouwens hoe groot googel is?

Programma en DLL

Om eens met grote getallen te spelen heb ik in Delphi een programma ontwikkeld dat de namen van (grote) getallen weergeeft.

Omdat het ook handig kan zijn om deze functionaliteit in eigen programma's of bijvoorbeeld in Excel te kunnen gebruiken heb ik er ook een DLL van gemaakt.

Download hier de zip met het programma en de DLL.

Wanneer u het programma opstart krijgt u het volgende scherm:

zeggetal1.jpg (43.518 bytes)

In het vak onder 'Voer een getal in', kunt u een willekeurig getal in tikken.

Als u hierna op Enter drukt of op de knop 'Zeg' klikt zal het programma het getal benoemen.

Aan de rechter bovenzijde kunt u nog wat instellingen doen.

Klik op de knop met het vraagteken voor wat meer uitleg:

zeggetal2.jpg (27.675 bytes)

De DLL heet zegdll.dll en kunt u in de windows/system of windows/system32 directory zetten.

U kunt het bestand ook in een andere directory plaatsen, maar dan moet u bij de declaratie aanroep in een ander programma het volledige pad vermelden.

De DLL exporteert 4 functionaliteiten:

functie ZegGetal(s: string): string;
Deze functie wil een getal in tekst als invoer en geeft de naam van het getal als uitvoer.

procedure ZegGetalOpmaak(spatie: string; duizendscheider: string = '.'; metdecimalen: boolean = true);
Met deze procedure kunt u een aantal instellingen verrichten voor de functie ZegGetal, parameters spreken hopelijk voor zich.

functie o_ZegGetal(s: PChar): PChar;
De C-variant van de functie ZegGetal.

procedure o_ZegGetalOpmaak(spatie: PChar; duizendscheider: PChar; metdecimalen: boolean);
De C-variant van de procedure ZegGetalOpmaak.


De kenners weten nu dat bovenstaande in Delphi is gemaakt.

De eertse twee functionaliteiten zijn te gebruiken in Delphi.
De laatste twee functionaliteiten zijn te gebruiken in bv. office of andere op C gebasseerde programma's.

Gebruik in Delphi

In het implementation gedeelte van de unit voor de eerste aanroep:

function ZegGetal(s: string): string; stdcall; external 'c:\mijnpad\zegdll.dll';
procedure ZegGetalOpmaak(spatie: string; duizendscheider: string = '.'; metdecimalen: boolean = true); stdcall; external 'c:\mijnpad\zegdll.dll';

waarbij 'mijnpad' het volledige pad van de map is waar de dll staat.

Hierna kunt u de functionaliteit gebruiken.

Gebruik in Excel

Om de DLL in Excel te kunnen gebruiken moet u een aantal handelingen uitvoeren:

Als eerste moet u er voor zorgen dat Excel Macro's accepteert:

- Open Excel
- Ga naar het menu Extra-->Macro-->Beveiliging...
- Stel het beveiligingsniveau in op Gemiddeld of op Laag

Bij de optie Gemiddeld zal Excel bij het openen van een werkboek met Macro's toestemming vragen om deze te mogen uitvoeren.

De routines van de Dll moeten eerst in Excel (VBA) gedeclareerd worden, voordat u deze kunt gebruiken.
VBA (Visual Basic for Applications) is de achterliggende programmeertaal van de Office-paketten.
Om dit voor elkaar te krijgen moet u de Dll vanuit een Module aanroepen.

- Kies Extra-->Macro-->Visual Basic Editor of klik Alt+F11

U komt nu in de VBA-editor van Excel.
Bovenin staat het menu alsmede een knoppenbalk.
Links staan het project-venster en het eigenschappen-venster.
De rest van de ruimte is voor de code.
Ieder werkblad heeft zijn eigen code-venster. Ook het werkboek heeft zijn eigen code-venster.
Wanneer je echter iets globaals wilt doen (dus voor alle werkbladen) neem je een Module, want deze heeft standaard een globaal karakter.

- Kies uit het menu Invoegen de optie Module

Als het goed is, heeft u nu een module-venster gekregen, dat kunt u zien in het project-venster links.
Nu kunnen we de functie o_ZegGetal gaan declareren.

- Tik in het module-venster de volgende regel:

Declare Function o_ZegGetal Lib "c:\mijnpad\zegdll.dll" (ByVal s As String) As String

'mijnpad' is het pad naar de map waar de DLL staat.

Vergeet niet aan het einde van de regel op Enter te drukken, want dan pas gaat VBA de regel evalueren. Mocht er een fout in zitten, dan wordt dat meteen aangegeven.

- Tik onder de eerste Declare-regel de volgende regel:

Declare Sub o_ZegGetalOpmaak Lib "c:\mijnpad\zegdll.dll" (ByVal spatie As String, ByVal duizendscheider As String, ByVal metdecimalen As Boolean)

- Druk nu 2 keer op Enter en voer de volgende regels in:

Function ZegGetal(ByVal s As String) As String
    o_ZegGetalOpmaak " ", ".", False
    ZegGetal = o_ZegGetal(s)
End Function

Deze laatste functie zorgt ervoor dat u nu een makkelijke werkblad-functie heeft.

Het gebruik van de functie in een werkblad gaat nu als volgt:

Selecteer een cel in een werkblad, zeg B4, en tik daar een getal in.

In de cel daar naast, dus C4, tikt u de volgende formule in: =TEKST(B4,"0") ,om van het getal in B4 tekst te maken.

In de cel daar weer naast, dus D4, tikt u de volgende formule in: =ZegGetal(C4) , en het getal staat er in tekst.

Ik hoop dat e.e.a. duidelijk is en dat u er vrolijk gebruik van kunt maken.

Antwoord op de vraag

1 googel = tien duizend sedeciljoen, ofwel een 1 gevolgd door 100 nullen.