Decimal getal

Status
Niet open voor verdere reacties.

WILLIAMXXX

Terugkerende gebruiker
Lid geworden
29 nov 2006
Berichten
1.246
Hoe kan je controleren of F As Integer een Decimal getal is.
Het hoeft niet per se een decimal getal, het kan ook een heel getal zijn.

Code:
If F = ...

En hoe kan je de invoer van een textbox beperken tot alleen cijfers 0 t/m 9?
Zonder alles te Replacen'en...
 
Laatst bewerkt:
Hoe kan je controleren of F As Integer een Decimal getal is.
Het hoeft niet per se een decimal getal, het kan ook een heel getal zijn.

Code:
If F = ...

Je kan het getal vermenigvuldigen en daarna met modulo controleren of er een rest is:

1*100 = 10
1,1*100 = 110
1,2*100 = 120

100%100 = 0
110%100 = 10
120%100 = 20

Wanneer je een resterende waarde overhoudt is het getal dus geen geheel getal.
(het zou best kunnen dat er een makkelijkere manier is)
 
Je kan het getal vermenigvuldigen en daarna met modulo controleren of er een rest is:

1*100 = 10
1,1*100 = 110
1,2*100 = 120

100%100 = 0
110%100 = 10
120%100 = 20

Wanneer je een resterende waarde overhoudt is het getal dus geen geheel getal.
(het zou best kunnen dat er een makkelijkere manier is)

Of meteen modulo 1, bij rest is het geen heel getal :)
 
Of meteen modulo 1, bij rest is het geen heel getal :)

Ik weet niet of dit overal werkt... in C++ kun je de modulo operator bijvoorbeeld niet op een double gebruiken, je zal deze dus eerst moeten casten naar een integer. En dan wordt het ingevoerde getal dus afgerond. 1,1 wordt dan 1 -> altijd een heel getal dus;
 
Hoe kan je controleren of F As Integer een Decimal getal is

de Type van 'F' wordt automatisch aangepast naar een double ofzo als het geen heel getal is.
Waarom zo moeilijk doen? Met TypeCasting kom je er makkelijker achter

Code:
        Dim f = 32143423.34234

        Select Case TypeName(f).ToString
            Case "Single", "Double", "Decimal"
                MsgBox("Heeft iets achter de komma", MsgBoxStyle.OkOnly)
            Case "Integer"
                MsgBox("Is een heel getal", MsgBoxStyle.OkOnly)
            Case Else
                MsgBox("Is geen getal", MsgBoxStyle.OkOnly)
        End Select


en om op je 2e vraag terug te komen , dat is weer een select case in je key_press event.

Code:
    Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
        Select Case Asc(e.KeyChar)
            Case 48 To 57 'ascii codes (0-9)
            Case Else
                e.KeyChar = ""
        End Select
    End Sub
 
Laatst bewerkt:
Is gelukt maar Backspace mag trouwens ook worden ingedrukt;)

Welke code is dat?
 
Ok, had het ondertussen al in de Object Browser gevonden:thumb:
 
de Type van 'F' wordt automatisch aangepast naar een double ofzo als het geen heel getal is.
Waarom zo moeilijk doen? Met TypeCasting kom je er makkelijker achter

Echt veel makkelijker is die methode toch ook niet ? (ook qua snelheid zal het niet veel schelen, heb ik zo'n vermoeden)

Code:
if(int(x*100)%100==0)
  // heel getal
else
  // geen heel getal

(en voor zijn tweede vraag bestaat er ook nog een API... weet niet meer uit m'n hoofd welke, maar is wel te vinden via Google)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan