| FAQ | 
| Kalender | 
|  2009-03-12, 15:34 | #1 | ||
| 
 | |||
| Flitig postare | 
			
			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. | ||
|   |  Svara med citat | 
|  2009-03-12, 15:43 | #2 | ||
| 
 | |||
| Klarade millennium-buggen | 
			
			Dela med 3000 och avrunda upp till närmaste heltal. Kod: Function EgenAbs(Tal) If InStr(Tal, ",") <> "0" Then EgenAbs = Left(Tal, (InStr(Tal, ",") - 1)) Else EgenAbs = Tal End If End Function | ||
|   |  Svara med citat | 
|  2009-03-12, 15:46 | #3 | ||
| 
 | |||
| Supermoderator | Citat: 
 
				__________________ Full-stack developer, free for smaller assignments | ||
|   |  Svara med citat | 
|  2009-03-12, 17:29 | #4 | |||
| 
 | ||||
| Mycket flitig postare | 
			
			Om du vill ha det lite mer generellt: nytt_tal = avrunda_uppåt(gammalt_tal * nytt_max / gammalt_max) | |||
|   |  Svara med citat | 
|  2009-03-12, 22:43 | #5 | ||
| 
 | |||
| Medlem | 
			
			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). | ||
|   |  Svara med citat | 
|  2009-03-13, 02:42 | #6 | ||
| 
 | |||
| Klarade millennium-buggen | 
			
			Håller med etanders och vill konkretisera det med ett exempel: Kod: ' Funktion 1 ' VB.NET public function rank(ByVal heltal as integer) as integer * *dim kvot as integer * *kvot=heltal/3000+1 * *return kvot end function Kod: ' Funktion 2 ' VB.NET ' Mer generell kod public function rank(ByVal heltal as integer, ByVal minRank as integer, ByVal maxRank as integer, *ByVal maxHeltal as integer) as integer * *dim kvot as integer * *kvot=heltal/(maxHeltal/maxRank)+minRank * *return kvot end function Kod: ' Funktion 3 ' VB.NET ' Använd Den generella koden... public function rank(ByVal heltal as integer) as integer * *return rank(heltal,1,10,30000) end function | ||
|   |  Svara med citat | 
| Svara | 
| 
 | 
 |