public string NumberToWords(long Number, // ERROR: Optional parameters aren't supported in C# bool BlankIfZero)
{
string functionReturnValue = null;
switch (Number) {
case 0:
functionReturnValue = (BlankIfZero ? "" : "Zero");
break;
case 1: // TODO: to 19
functionReturnValue = Interaction.Choose(Number, "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine",
"Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen"
);
break;
case 20: // TODO: to 99
functionReturnValue = Interaction.Choose(Number / 10 - 1, "Twenty", "Thirty", "Fourty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety") + NumberToWords(Number % 10, true);
break;
case 100: // TODO: to 999
functionReturnValue = NumberToWords(Number / 100) + "Hundred" + (Number >= 200 ? "s" : "") + NumberToWords(Number % 100, true);
break;
case 1000: // TODO: to 999999
functionReturnValue = NumberToWords(Number / 1000) + "Thousand" + (Number >= 2000 ? "s" : "") + NumberToWords(Number % 1000, true);
break;
case 1000000: // TODO: to 999999999
functionReturnValue = NumberToWords(Number / 1000000) + "Million" + (Number >= 2000000 ? "s" : "") + NumberToWords(Number % 1000000, true);
break;
case // ERROR: Case labels with binary operators are unsupported : GreaterThanOrEqual 1000000000:
functionReturnValue = NumberToWords(Number / 1000000000) + "Billion" + (Number >= 2000000000 ? "s" : "") + NumberToWords(Number % 1000000000, true);
break;
}
return functionReturnValue;
}