Out of fun, I solved ["Nice Angles" challenge on CodeEval](https://www.codeeval.com/open_challenges/160/) in C# 4.0: 

> 
> **CHALLENGE DESCRIPTION:**
> 
> 
> Write a program that outputs the value of angle, reducing its
>  fractional part to minutes and seconds.
> 
> 
> **INPUT SAMPLE:**
> 
> 
> The first argument is a path to a file that contains the values of
>  angles with their decimal fractions:
> 
> 
> 
> ```
> 330.39991833
> 0.001
> 14.64530319
> 0.25
> 254.16991217
> 
> ```
> 
> **OUTPUT SAMPLE:**
> 
> 
> Print to stdout values of angles with their fractional parts reduced
>  to minutes and seconds.
> 
> 
> The whole and fractional parts are separated by period, minutes are
>  separated by apostrophe, seconds by double quotes. The values of
>  minutes and seconds are shown as two numbers (with leading zeros if
>  needed).
> 
> 
> 
> ```
>  330.23'59"
>  0.00'03"
>  14.38'43"
>  0.15'00"
>  254.10'11"
> 
> ```
> 
> 

This is the code I used to solve the problem:

```
public static void ConvertToMinSec(string path)
        {
            using (StreamReader reader = File.OpenText(path))
            {

                while (!reader.EndOfStream)
                {
                    var degreeValues = reader.ReadLine();
                    if (!string.IsNullOrWhiteSpace(degreeValues))
                    {
                        var totalVal = degreeValues.Split('.');
                        if (totalVal.Length == 1)
                        {
                            var temp = totalVal[0] + ".0";
                            totalVal = temp.Split('.');
                        }
                        var intPart = totalVal[0];
                        var decimalPart =  "0." + totalVal[1];
                        decimal minutes;
                        decimal.TryParse(decimalPart, out minutes);

                        minutes = decimal.Multiply(minutes, 60);
                        var minutePart = (int)minutes;
                        var remainingDecimal = minutes.ToString().Split('.');
                        if (remainingDecimal.Length == 1)
                        {
                            var tempDecimal = remainingDecimal[0] + ".0";
                            remainingDecimal = tempDecimal.Split('.');
                        }

                        decimal seconds;
                        decimal.TryParse("0." + remainingDecimal[1], out seconds);
                        seconds = seconds*60;
                        var secondsPart = (int) seconds;
                        var report = string.Format("{0}"+"."+"{1:00}"+"'"+"{2:00}"+'"', intPart,
                            minutePart, secondsPart);

                        Console.WriteLine(report);
                    }
                }
            }

```