Hej! Jag får det till att bli 25 Moms1 = (KortTrans.ArtMoms(i) * 100) / (KortTrans.ArtAPris(i) * KortTrans.ArtAntal(i) - KortTrans.ArtMoms(i)) Antagligen blir Moms1 = 24.999... vilket med Int blir 24. Är det verkligen heltalsdelen och inte ett avrundat värde du vill ha? det är ett problem med flyttal , folk utgår ofta från att om din double är 25 så är den exakt 25 vilket inte är fallet , den är bara _väldigt_ nära 25... det kan vara så att den är 24.9999999999999999999999 även om debuggern skulle visa det som 25.. och skickar du då in det talet till "int(..)" så får du 24 Tackar alla för hjälpen! Detta ämne har diskuterats här tidigare. Prova att söka i forumet så hittar du säker mer fakta om varför det blir så.Int i VB6
Varför detta fenomen?
Dim Moms1
Dim Belopp
Moms1=25
Belopp=Int(Moms1)
Belopp blir 24
Varför då då??
/BoSv: Int i VB6
Men mera rätt borde du deklarera variablerna på rätt sätt i VB
Exempelvis
Dim Moms1 As Double
Dim Belopp As Integer
Moms1=25
Belopp=Int(Moms1)
Eftersom Int ger heltalsdelen i formen "Integer" så borde den deklarerats som Integer
från VB hjälp
"Both Int and Fix remove the fractional part of number and return the resulting integer value"
De deklarationer som du gjort av "Moms1" och Belopp blir i formen "Variant"Sv: Int i VB6
Är hela sanningen. KortTrans.* är alla double
Det hjälper inte att deklarera variablerna, vilket jag alltid brukar göra. Vad som
hjälper är detta:
Moms1 = Format(Moms1, "#######0.00")
Belopp=Int(Moms1)
Jag tycker att det hela är mysko
/BoSv: Int i VB6
Sv: Int i VB6
//RogerSv: Int i VB6
Det troliga är att värdet inte är 25 utan 24 någonting som du Roger påpekar. Världen är inte
alltid vad den synes vara.
/BoSv: Int i VB6