To store the values you can use a struct like this:
public struct HSVColor
{
public double Hue;
public double Saturation;
public double Value;
}
Then this method will populate and return one of these objects with the correct values.
public static HSVColor GetHSV (Color color)
{
HSVColor toReturn = new HSVColor();
int max = Math.Max(color.R, Math.Max(color.G, color.B));
int min = Math.Min(color.R, Math.Min(color.G, color.B));
toReturn.Hue = Math.Round(color.GetHue(), 2);
toReturn.Saturation = ( ( max == 0 ) ? 0 : 1d - ( 1d * min / max ) ) * 100;
toReturn.Saturation = Math.Round(toReturn.Saturation, 2);
toReturn.Value = Math.Round(( ( max / 255d ) * 100 ), 2);
return toReturn;
}
If you need all decimal places just remove the Math.Round method call.