Hej Blir detta rätt? i c# går det att lösa med: Tackar, underbart at få hjälp när det blir helstopp i tankeprocessenMatteformel med avrundning special
Kört fullkomligt fast med att skriva en funktion för avrundning special
Försökt med Round och lite divisioner mm men blir inte bra
Någon som har en bra idé på hur man ska knäcka problemet.
Exempe på in och ut.
Till vänster in och till höger resultatet
tiotal med 10 steg
16 20
94 90
42 40
98 100
hundratal steg med 50
211 200
268 250
279 300
tusen med 100 steg
2110 2100
1897 1900
tiotusen med 500 steg
23678 23500
23780 24000
23114 23000
hundratusental med 1000 steg
236784 237000
299891 300000
123456 123000
formel behöver bara klara från 10 - 999999Sv: Matteformel med avrundning special
<code>
' Avrunda x till närmaste d-tal
Function GenericRound(x As Integer, d As Integer)
GenericRound = d * Round(x/d);
End Function
Function SpecialRound(x As Integer)
If x < 100
SpecialRound = GenericRound(x, 10)
ElseIf x < 1000
SpecialRound = GenericRound(x, 50)
ElseIf x < 10000
SpecialRound = GenericRound(x, 100)
ElseIf x < 100000
SpecialRound = GenericRound(x, 500)
Else
SpecialRound = GenericRound(x, 1000)
End Function
</code>Sv: Matteformel med avrundning special
double res=Math.Round (value/step,0)*step;
där value är ditt värde som ska avrundas och step är hur stora steg den ska avrunda
och 0 är antal decimaler i roundfunktionen
alltså:
23780 / 500 avrundat till 0 decimaler = 48
48*500=24000 :)
[edit ok fattade itne att den skulle automagiskt ta rätt storlek på step :P ... och så var jag visst 2 min för sen :/]
//RogerSv: Matteformel med avrundning special
Använder Per Perssons lösning. Roggan var inne på liknande lösning
Tackar er båda.