Med denna kod får jag ex: 1,99 till 2,00 Du avrundar inte till 50-öringar, dom finns ju. Men är det så att du inte vill ha det? >men hur, kan man skriva så att Ex 1,45 "Talet blir 1,00" och"Talet 1,51 blir 2,00" testa detta med bara 2 textboxar ock en knapp Tackar för förslagen men.. Roade mig med att snickra ihop ett ex på 1:47 Hej En grovyxad lösning som funkar. Det här: Förbaskat elegant Niklas , förstod att det skulle finnas en snygg lösning Tack... Inte för att på något sätt klanka ner på din tidigare lösning Sven, men ett problem med sådana typer av lösningar är ju att det kan finnas grejer mellan 0.749 och 0.75, och att 0.7495 då alltså kan få ett godtyckligt värde. I sammband med Niklas kommentar så vill jag att någon reder ut det Om du nu inte räknar med 50 öringar utan bara vill ha (som i grundfrågan) 1,45 till 1 osv... så är denna lösning bäst tror jag: >2003-12-29 13:44:45 - hoffaMOD
Private Sub Text1_LostFocus()
Dim Svar As Integer
Label1.Caption = "Talet är " & Text1.Text Mod 2 * 10
End Sub
men hur, kan man skriva så att Ex 1,45 "Talet blir 1,00" och"Talet 1,51 blir 2,00"
Eftersom det inte finns 10, 25 öringar.
HAr letat här på sökning, har ej lyckats att klura ut hur!
SJSv: MOD
Sv: MOD
Label1.Caption = Format$(CLng(Talet),"0.00")Sv: MOD
skriv in 1,45 respektive 1,51 i txt1
Private Sub Command1_Click()
txt2.Text = CInt(txt1.Text)
End SubSv: MOD
Ja Pelle, det tänkte jag inte på, Naturligtvis ska ex: 1,50 vara 1,50, går det att ordna?
Provade er andra förslag också det var mycket bättre än det jag försökte mig på.
Jag kanske var lite oklar på vad jag var ute efter, kanske en bit på vägen nu.
SJSv: MOD
Du får fortsätta på detta tema. Round tillhör VB 6
Private Sub Command1_Click()
Label1.Caption = Format$(Round(1.47 * 0.1, 2) * 10, "0.00")
End Sub
Edit : Näää det var inget bra ;-) Vi får ta det som en utmaning
Allt över ex. 1.25 skall bli 1:50 tills 1.76 som skall bli 2:00
1:24 skall bli 1:00 1.74 skall bli 1:50
Jaaa Ni förstår, får Vi se en bra algoritm ?Sv: MOD
Glömde har ej VB6 det är VB5, Då fick jag svar på varför det inte gick med Round när jag försökte med ett exempel.
SJSv: MOD
<code>
Option Explicit
Private Sub Command1_Click()
Label1.Caption = Avrunda(12.47) ' Testa olika input här
End Sub
Private Function Avrunda(ByVal inValue As Double) As String
Dim frac As Single, retStr As String
frac = inValue - Int(inValue)
Select Case frac
Case Is < 0.25
retStr = Format$(Int(inValue), "0.00")
Case 0.26 To 0.74
retStr = Format$(Int(inValue), "0.50")
Case 0.75 To 0.99
retStr = Format$(Int(inValue) + 1, "0.00")
End Select
Avrunda = retStr
End Function
</code>Sv: MOD
Int(Tal+0.5)
ger det närmaste heltalet.
Int(2*Tal+0.5)/2
borde ju då ge närmaste 0.5-taletSv: MOD
Så här blir det då SJ. Som vanligt strul med decimalavskiljare
använd ,(komma) i detta exempel.
<code>
Option Explicit
Private Sub Text1_LostFocus()
'Obs om du använder ,(komma) som decimalavskiljare)
Text1.Text = Avrunda(CDbl(Text1.Text)) ' Testa olika input här
'Obs om du använder .(punkt) som decimalavskiljare)
'Text1.Text = Avrunda(Val(Text1.Text))
End Sub
Private Function Avrunda(ByVal inValue As Double) As String
Avrunda = Format$(Int(2 * inValue + 0.5) / 2, "0.00")
End Function
</code>Sv: MOD
SvenPon det fungerar precis som tänkt. Det som fungerar för mig:
Text1.Text = Avrunda(CDbl(Text1.Text))
Stort tack.
SJSv: MOD
Funderar lite på hur min lösning klarar negativa tal (och hur sådana bör behandlas).
En annan variant kunde då vara Sig(Tal)*Int(2*Abs(Tal)+0.5)/2. Eller vad nu den funktionen heter. Men så länge negativa tal inte är aktuellt så är det ju bra mycket snyggare med den "rena" lösningen.Sv: MOD
som jag har kunnat , men glömt.
Hur räknar bankerna med ränta mm. med 4 decimaler ?Sv: MOD
tal=int(tal + 0,5)Sv: MOD
>Om du nu inte räknar med 50 öringar utan bara vill ha (som i grundfrågan) 1,45 till 1
>osv... så är denna lösning bäst tror jag:
>tal=int(tal + 0,5)
>2003-10-16 18:38:53 - Niklas Jansson
>Det här:
>Int(Tal+0.5)
>ger det närmaste heltalet.
>Int(2*Tal+0.5)/2
>borde ju då ge närmaste 0.5-talet
Ska det vara så svårt att läsa igenom tråden?
Att ge samma svar igen är ju helt meningslöst... det känns som om "jag orkar inte läsa igenom tråden för att se om det finns ett svar, men jag vet hur man gör så jag tänker skryta om det och skriva in det ändå".
Samma sak som när folk skickar in program till filarean utan källkod bara för att skryta med att de har lyckats lösa något.