Hej! Det bör fungera med: Kör med round och varianter istället. Snabbt och kanske fel <b>Tal= Round(Tal/10)*10 Sven, man vet ju inte från början att det är 30 som man ska avrunda till...? >tal + 10 - tal Mod 10 Svarar mig själv här... :) Tja Johan! Lite sur på dig Thorbjörn att du inte talade om att det skall vänd vid 0.5 Hej Sven! <b>Skall vara så här Int(Tal / 10 + 1) * 10</b> Hej Thomas! Hmm, det beror på exakt vad man vill göra. Int retunerar ju heltalsdelen av ett tal, dvs. klipper bort alla decimaler. Är det detta som man vill göra så är ju ett vanligt Int(Tal/10)*10 det rätta om man vill klippa ner till helt tiotal. >Int retunerar ju heltalsdelen av ett tal, dvs. klipper bort alla decimaler >Nix, Int avrundar alltid nedåt.Avrunda tal till närmsta tiotal
Jag behöver Avrunda tal upp till närmsta tiotal
tex; 27 blir 30
Hur göra man ?
TobbeSv: Avrunda tal till närmsta tiotal
(Int((tal - 0.00001) / 10) + 1) * 10
0.00001 väljs beroende på hur många decimaler talen du ska avrunda har... I detta fallet så blir det alltså fel om talet är mellan "tiotal - 0.00001" och "tiotal".
Om du vill ha till närmsat tiotal (som frågan var ställd först) så borde det bli:
Int(tal / 10 + 0.5) * 10
/JohanSv:Avrunda tal till närmsta tiotal
Tal= Round(Tal/10)*10
Byt ut round mot fix eller någon av de andra för att få andra typer av avrundningar.Sv: Avrunda tal till närmsta tiotal
<code>
Option Explicit
Private Sub Command1_Click()
Dim tal1 As Long, tal2 As Long, Svar As Long
'Jag låste på tex; 27 blir 30
tal1 = 27
tal2 = 30
Svar = tal2 Mod tal1
MsgBox Svar + tal1
End Sub
</code>
kolla fil Programarkivet:KontrollSiffra PersonNummer mfl. där jag just tar han dom detta problemSv: Avrunda tal till närmsta tiotal
Byt ut round mot fix eller någon av de andra för att få andra typer av avrundningar.</b>
Round avrundar till närmsta tiotal och Fix avrundar nedåt, det finns väl ingen funktion som avrundar uppåt automatiskt?
/JohanSv:Avrunda tal till närmsta tiotal
Med inspiration från din lösning kom jag på att man borde kunna göra såhär om det rör sig om heltal:
tal + 10 - tal Mod 10
/JohanSv: Avrunda tal till närmsta tiotal
Javisst det var så jag egentligen menade.Har det i min Personnummerlösning
<code>
Ksum = 10 - (Ksum Mod 10)
If Ksum = 10 Then Ksum = 0
'Returnera resultatet
KontrollSiffra = CStr(Ksum)
</code>Sv: Avrunda tal till närmsta tiotal
<b>
Med inspiration från din lösning kom jag på att man borde kunna göra såhär om det rör sig om heltal:
tal + 10 - tal Mod 10</b>
Det blir ju fel när tal är ett jämt 10-tal...
/JohanSv:Avrunda tal till närmsta tiotal
Det funkar bra med ditt första inlägg Tackar väldigt mycket för det:-)
Int(tal / 10 + 0.5) * 10
TobbeSv: Avrunda tal till närmsta tiotal
Läs din frågeställning ! "Som man ropar får man svar"Sv:Avrunda tal till närmsta tiotal
Det ska det inte heller!
Kollade/tänkte inte på det, tack för att du tänkte på det.
Skall vara så här Int(tal / 10 + 1) * 10
TorbjörnSv: Avrunda tal till närmsta tiotal
Det där blir väl fel om Tal redan är ett jämt tiotal. 10 blir 20, 20 blir 30 osv.
Rätt kod borde vara:
<code>
Int(Tal / 10 + 0.9) * 10
</code>
ThomasSv:Avrunda tal till närmsta tiotal
Eftersom jag vill använda denna funktion i mschart för maxvärde funker det som jag vill ha det.
TobbeSv:Avrunda tal till närmsta tiotal
Vill man använda funktionen Int för att göra korrekt avrundning så får man lägga till 0,5 innan man klipper decimalerna för att få korrekt avrunding: Int(Tal/10+0.5)*10. Vid avrundning till X så är det ju från X-0,5 till X+0,5 som man avrundar dit. Lägger man till 0,5 så blir det ju från X till X+1,0 vilket ju är detsamma som tunkering. Med tillägget 0,5 så kommer tal som slutar på ,5 att avrundas uppåt i alla fall, vill man ha något annat så får man lägga till lämpligt villkor.
Givetvis kan man också skriva Int ((Tal+5)/10)*10. Detta funkar med heltal med, om man tar bort Int funktionen: (( Tal+5) div 10)*10
Tycker nog ändå det verkar vettigast att använda inbyggd funktion för avrundning om det finns en så slipper man fundera på sådana här trick: Round(Tal/10)*10 Sv: Avrunda tal till närmsta tiotal
Nix, Int avrundar alltid nedåt.
Int(-3.14) ger -4
Det finns många olika sätt att avrunda
1. Till närmaste heltal, 0,5 uppåt
2. Till närmaste heltal, 0,5 nedåt
3. Till närmaste heltal, 0,5 mot 0
4. Till närmaste heltal, 0,5 från 0
5. Till närmaste heltal, 0,5 till jämt heltal
6. Till närmaste heltal, 0,5 till udda heltal
7. Alltid avrunda uppåt
8. Alltid avrunda nedåt
9. Avrunda mot 0
10. Avrunda från 0
>Tycker nog ändå det verkar vettigast att använda inbyggd funktion för avrundning om det finns en så slipper man
>fundera på sådana här trick: Round(Tal/10)*10
Konstigt resonemang. Det beror väl på vilken avrundning man vill ha
"Int(Tal+0.5)" är typ 1
"Round(Tal) är typ 5
"Int(Tal)" är typ 8Sv:Avrunda tal till närmsta tiotal
Sant, uttryckte mig inte så klar eftersom jag tänkte på positiva tal bara.