Thursday, 31 July 2008

Negativa handikapp

Golfhandikappet som de flesta spelare har är ett negativt nummer, men det skrivs alltid utan minustecken, istället skrivs ett plustecken ut för de få spelare som faktiskt har ett plushandikapp. Handikappet en spelare har är ju något som ska dras av från resultatet. Om jag som har 18 i handikapp slår 90 slag på en golfrunda är mitt nettoresultat alltså 90 - 18 = 72 slag. Mitt handikapp är alltså -18, och inte 18 som är vedertaget. På samma sätt fungerar det för en plushandikappare, om en spelare med hcp +2 slår 72 slag på en runda blir dennes spelare resultat 72 + 2 = 74 slag netto. Det är väl normalt att hela golf sverige tar bor minustecknet framför sitt handikapp eftersom majoriteten har ett negativt handikapp, och de som har ett positivt handikapp uttryckligen skriver ett plustecken framför sitt handikapp. Matematiskt däremot är detta förkastligt. Gemene man säger att man sänker sitt handikapp när man spelare bättre än sitt handikapp. Säg att jag som har -18 i handikapp får 37 poäng på en runda, då blir mitt nya handikapp -17.7. Detta är ju en höjning! Och om jag får mindre än 33 poäng så blir mitt handikapp -18.1, vilket är en sänkning! Helt tvärtemot vad som är vedertaget i golfsverige! Detta struntar såklart C# koden i, och det är detta jag har sysslat med den senaste tiden, att lagra alla handikapp som negativa nummer i databasen, jag har även fått ändra alla sorteringsordningar och jämförelser. Inför detta projekt har jag skrivit dokument som beskriver olika typer av tänkta användare för golfprogrammet, och jag hade helt missat elitspelare, som ofta har plushandikapp. En sak som skulle ha varit halvjobbig att fixa innan extensions kom till är att skriva ut -18.0 som 18 (utan minustecken) och 2 som +2 (med plustecken), men detta fixade jag lätt med en extension på Decimal typen. public static string ToHcpString(this decimal? value) { string returnValue = ""; if (value.HasValue) { //Check if this is a plus handicapper if (value > 0) returnValue = "+" + value.ToString(); else returnValue = value.ToString(); //Remove any minus signs returnValue = returnValue.Replace("-", ""); } return returnValue; }

Labels: , ,

kick it on DotNetKicks.com