![]() |
Jag har en massa heltal som är mellan 1 och 30000. Nu vill jag minska ner alla dessa tal så att de hamnar på en ny skala, mellan 1 och 10.
Alla tal som är mellan 1 och 3000 på den gamla skalan skall på den nya skalan få värdet 1. Alla mellan 3000 och 6000 skall få värdet 2 etc. Finns det någon bra ekvation för detta? Vill helst inte skriva en massa if else satser i min kod. Förmodligen finns det en busenkel lösning på detta. Nån som vet? Uppdaterat: Problemet är ungefär som Googles PageRank. Alla sidor har ett PageRank värde mellan 1 och 10. Men i Googles interna system så är säkert värdet mellan 1 och 1000000. För att förenkla det hela så byter de skala när de visar upp värdet. Det är precis det jag också behöver göra. |
Dela med 3000 och avrunda upp till närmaste heltal.
Kod:
Function EgenAbs(Tal) |
Citat:
|
Om du vill ha det lite mer generellt:
nytt_tal = avrunda_uppåt(gammalt_tal * nytt_max / gammalt_max) |
Allra enklast blir ju formeln om man använder sig av heltalsdivision. Då slippar man tänka på avrundning.
nyttTal = (gammaltTal / 3000) + 1 Det framgår inte vilket språk radioaktivitet har tänkt att göra detta i, men i många språk ger /-operatorn heltalsdivision om båda operanderna är heltal (int). |
Håller med etanders och vill konkretisera det med ett exempel:
Kod:
' Funktion 1 Kod:
' Funktion 2 Kod:
' Funktion 3 |
Alla tider är GMT +2. Klockan är nu 14:19. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson