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.
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.
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.
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.
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.
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 |
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 | |
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:
|
|
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.
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.
1 googel = tien duizend sedeciljoen, ofwel een 1 gevolgd door 100 nullen.