Det gäller IF-satser. Tex: >De två talen av typ Single som jämförs heter värdeV och värdeH.Funkar VB i IF-satser ?
tal1=4
tal2=4
If tal1=tal2 Then
Print "Rätt"
Else
Print "Fel"
Print tal1
print tal2
End If
Utskriften blir:
Fel
4
4
Hur kan VB gå in i Else delen ?
Exemplet ovan är bara ett EXEMPEL. Det har INTE hänt i verkligheten.
Exemplet ska bara förtydliga vad som verkligen har hänt,
nämligen att VB gick in i Else delen.
Jag bifogar min formulärfil och worddokument som visar
detta. Filerna finns i en zip-fil på
www.pellesoft.nu/upload/IF-sats.zip
För det mesta får jag rätt utskrift. Men ibland, efter kanske 10-20 övningar,
får jag fel utskrift dvs VB gick in i Else delen. Jag har VB 6 + SP4
Frågar mig inte när det händer, jag vet bara att det händer.
Den felaktiga utskriften sker i den nedre delen av proceduren
Text1_KeyDown.
De två talen av typ Single som jämförs heter
värdeV och värdeH.
Det är ju ändå så att trots att en jämförelse
av två tal av typ Single hör till det
mest fundamentala i programmeringen, så
tycks det inte fungerar till 100%.
Jag misstänker att VB inte klara av att jämföra flyttal.
Om tex. värdeV=14 så framställs talet i datorn
kanske som 13,9999999999999987.
Om tex. värdeH=14 så framställs talet i datorn
kanske som 14,0000000000000011 .
Variablerna värdeV och värdeH är ju lika
men framställs som olika.
Min fråga är: hur ska koden se ut som gör det
möjligt att jämföra de två talen
IF värdeV = värdeH Then
som är av typen Single ?
Tusen tack om du skulle kunna hjälpa mig.
Min adress:
gm2590@komvux.burlov.se
Gunnar MSv: Funkar VB i IF-satser ?
Någon speciell anledning till att du använder Single? Double ger dig bättre precision.
>Jag misstänker att VB inte klara av att jämföra flyttal.
Det är snarare så att datorn inte kan lagra flyttal på ett exakt sätt. Det är inte direkt relaterat till VB, utan alla språk som följer IEEE standarden för flyttal har samma problem.
MS