Op zondag 23 september 2001 16:51 schreef GeniusDex het volgende:
ik weet niet, zo goed ben ik nou ook weer niet in QBasic
Ik gebruikte DEFINT A-Z bijna nooit. Weet nog steeds niet waarom je het nodig hebt

Maar zover ik weet heb je alleen een soort van float in QBasic, en dat is dan ook het enige soort getal (
* GeniusDex heeft dit bijna zeker weten fout)
In BASIC hoef(de) je niet je variabelen expliciet te declareren (kan natuurlijk wel). Met de DEFxxx statement geef je een default type aan variabelen.
'DEFINT range' gebruik je bijvoorbeeld om aan te geven dat de compiler alle variabelen die beginnen met een letter uit de range van het type Integer (16 bits) zijn. Je kunt ook de andere typen als default gebruiken (DEFLNG, DEFSNG, DEFDBL en DEFSTR geloof ik), en combinaties ervan. Zo kun je bijvoorbeeld zeggen dat alles dat met een s begint een string is.
En BASIC had dus niet alleen een 'soort van float', BASIC had Integer (16 bits), Long integer (32 bits), Single-precision floating point, Double-precision floating point en String. Het Currency type (64 bits) is er geloof ik (samen met Boolean) pas in VB bijgekomen.
Gelukkig kent VB de Option Explicit compiler directive, waarmee je tegen de compiler vertelt dat ie wèl moet gaan blaten als ie een ongedeclareerde variabele tegenkomt.
Je kunt in Basic trouwens variabelen casten met CInt, CLng, CSng, CDbl en CStr. Probeer dit dus eens:
code:
1
2
3
4
5
| DIM procentklaar AS SINGLE
counter = 217 ' (automatisch gelezen)
done = 12 ' (automatisch gelezen)
procentklaar = (CSng(counter) / 100 * CSng(done)) |
Een ander alternatief is om eerst te vermenigvuldigen en daarna pas door 100 te delen. Waarschijnlijk is een precisie tot op 1 procent toch wel genoeg.
code:
1
2
3
| counter = 217 (automatisch gelezen)
done = 12 (automatisch gelezen)
procentklaar = (counter * done) / 100 |