c# why does math ceiling return double