Getal afronden in Vb 2010

Status
Niet open voor verdere reacties.

Bertran

Gebruiker
Lid geworden
9 dec 2012
Berichten
37
Hallo allamaal.
Wie help me even op weg.

Ik wil getallen afronden maar krijg dit niet voor elkaar met de commando's daarvoor.

Dit heb ik geschreven

ProgressBar3.Value = Buffer(2) / 11.6

Label7.Text = CStr(Buffer(2))

Ik zo graag de uitkomst zien met 1 cijfer achter de komma, maar nu zijn het er erg veel:rolleyes:

Als beginner zal ik het wel helemaal fout doen, het schiet niet echt op zo.:o

Groet Bertran
 
Bedankt voor je reactie.

Als beginner doe ik het waarschijnlijk erg fout.
Ik had al met deze functie gestoeid maar het lukt me niet om af te ronden met 1 cijfer achter de Komma.
Het getal/waarde die uit--- ProgressBar3.Value = Buffer(2) / 11.6--- komt moet dus b.v geen 19 of 20 zijn
maar b.v 19,5 of 19,6.
Als ik deel met een \ rond het getal te slordig af, ik meet temperaturen vandaar.

Heb je een voorbeeld waar ik mee verder kan ?
Dat zou me enorm helpen.

Bertran
 
Even snel uit het hoofd. Probeer het eens zo:
ProgressBar3.Value = Format(Buffer(2) / 11.6, "##.#")
 
Laatst bewerkt:
Hier ben ik ook al een poosje mee bezig geweest en nu weer even.
Het ) sluiten geeft problemen wat ik ook doe, het getal word nu afgerond voor de komma. Dus in mijn geval 20
als ik de waarde verhoog geen tussen waarden, helaas.
Ik moet nog veel leren op mijn 66-tigste :-))

Bertran
 
De syntax die ik voorstelde is goed en daarin is het ) teken dus geen probleem.
Wat gaat er nu niet goed? En wat is de waarde van Buffer(2)?
Welke datatypen gebruik je voor de verschillende variabelen?
Wellicht is het handig als je de hele routine hier eens plaatst.
 
Het hele programma ?
Hoe doe ik dat het beste op een forum.
Vergeet niet ik ben pas 14 dagen bezig Hiii
 
Ik bedoelde alleen de betreffende routine.
Maar misschien kun je beter even vertellen wat er mis gaat bij dat ) teken.
 
Dit is de routine.
Het is een stukje software van de Velleman Edu05.
Dat pas ik aan aan mijn behoefte.
Tot nu toe ging dat prima.

De fout melding is helaas steeds anders maar verschijnt na het debuggen.

Kun je hier wat mee ?

Code:
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim i As Integer
        Dim Buffer(5) As Integer
        Timer1.Enabled = False

        If Connected() Then
            Label1.Text = "EDU05 connected"
        Else
            Label1.Text = "EDU05 not connected"
        End If

        For i = 0 To 4
            Buffer(i) = ReadAnalogChannel(i + 1)
        Next
        SetPWM(1, TrackBar1.Value)
        Label15.Text = CStr(TrackBar1.Value)

        VerticalProgressBar1.Value = CStr(TrackBar1.Value)
        VerticalProgressBar2.Value = CStr(TrackBar2.Value)

        ProgressBar1.Value = Buffer(0)
        Label4.Text = CStr(Buffer(0))
        ProgressBar2.Value = Buffer(1)
        Label5.Text = CStr(Buffer(1))



        ProgressBar3.Value = Buffer(2) \ 11.3
        Label7.Text = CStr(Buffer(2)) \ 11.3


        ProgressBar4.Value = Buffer(3) \ 24.5
        Math.Round(ProgressBar4.Value, 2)
        Label9.Text = CStr(Buffer(3)) \ 24.5

        ProgressBar5.Value = Buffer(4)
        Label11.Text = CStr(Buffer(4))

        i = ReadAllDigital()
        CheckBox1.Checked = (i And 1)
        CheckBox2.Checked = (i And 2) \ 2
        CheckBox3.Checked = (i And 4) \ 4
        CheckBox4.Checked = (i And 8) \ 8
        CheckBox5.Checked = (i And 16) \ 16
        CheckBox6.Checked = (i And 32) \ 32
        CheckBox7.Checked = (i And 64) \ 64
        CheckBox8.Checked = (i And 128) \ 128

        Timer1.Enabled = True
    End Sub
 
Laatst bewerkt door een moderator:
Deze regel als voorbeeld:
ProgressBar3.Value = Buffer(2) \ 11.3

Zou je dus moeten wijzigen in:
ProgressBar3.Value = Format(Buffer(2) \ 11.3, "##.#")

Syntactisch is dat correct dus ik ben wel benieuwd naar de foutmelding die dat geeft.

Wil je ook je code hier nog even in code tags zetten?
Wijzig je post, ga naar Geavanceerd, selecteer je codetekst en klik dan op het # teken.
 
Laatst bewerkt:
Perfect, maar ik bedoelde in je vorige post ;)
Nu nog de foutmelding die kennelijk wordt veroorzaakt door dat ) teken.
 
De melding komt na debuggen.

" Make sure the source type is convertible to the destination type "
 
Ok. Vandaar dat ik vroeg naar de gebruikte datatypes.
Probeer dit eens:
ProgressBar3.Value = Format(Cstr(Buffer(2) \ 11.3), "##.#")
 
helaas geen goed resultaat.
Maar als ik de #-jes vervang door Nullen zoals voorbeelden volgens boek dan geen foutmeldingen meer.
Maar het getal blijft voor de komma.

Als je er genoeg van heb stoppen we, eventueel hoor ik nog van je. Kijk maar

In ieder geval dank en een goed 2013 toegewenst.
Bertran
 
Probeer het eens zo
Code:
 ProgressBar1.Value = FormatNumber(Buffer(2) \ 11.3), 1)
 
Ik gebruik zelf altijd
[CPP]Math.Round(Buffer(2) \ 11.3, 1)[/CPP]

Vind ik zelf het prettigst. Zo zie je maar dat het op meerdere manieren kan...

MartinJM
 
Ik ben effe druk met andere dingen Hiiii
Maar ik ga het vandaag nog uit proberen.
En laat weten of het lukte.

Veel dank en een error vrij 2013 op alle fronten.

Bertran
 
Beide code's werken na veel ge probeer helaas niet.
Bij deze code krijg ik de melding dat er verkeerd ) (Haakje) achter de 1 word afgesloten

ProgressBar1.Value = FormatNumber(Buffer(2) \ 11.3), 1)

De Math.round code geeft geen fout melding maar werkt ook niet.

Gr Bertran
 
Je ziet ook niet dat hier:
ProgressBar1.Value = FormatNumber(Buffer(2) \ 11.3), 1)

een ) teveel in staat?
Dat is wat de foutmelding al aangeeft.
 
Dyslexie is een ramp zeker op mijn leeftijd.En als je gaat programeren:o
Hier lees ik dus gewoon overheen.

Bedankt ik ga weer proberen.

Gr Bertran
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan