Nefunkční podmínka   otázka

VB.NET

Dobrý den, možná něco přehlížím, ale netuším, proč se nevyvolá podmínka, pokud je proměnná cas v rozsahu hodnot 0.8 - 1.1.

  Dim cas As Double

    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        cas = cas + 0.1

        If cas = 0.8 Then
            MsgBox("OK")
        End If

    End Sub

Předem díky za odpovědi.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Double není přesný datový typ, viz. následující zápisek:

http://www.vbnet.cz/blog-clanek--284-net...

Možná se během toho přičítání dochází k nepřesnosti a Vy tam místo .8 máte něco jako .79999999...

Buď použijte Decimal (který ale bude paměťově náročnější) a nebo pokud přičítáte vždy pouze číslo o jednom desetinném místě, vynásobte tu hodnotu deseti (posuneme doleva o jedno desetinné místo, aby vynásobené číslo nemělo žádná desetinná místa) a porovnejte jako Integer, tedy:

Dim casTimesTen As Integer = cas * 10 + 1
If casTimesTen = 8 Then MessageBox.Show("Ok.")
nahlásit spamnahlásit spam 0 odpovědětodpovědět

Díky za bleskovou odpověď.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback