Files
Terminal.Gui/Examples/UICatalog/NumberToWords.cs
Tig 7fe6fd9453 Fixes #4046 - Moves examples into ./Examples and fixes ./Tests (#4047)
* touching publish.yml

* Moved Examples into ./Examples

* Moved Benchmarks into ./Tests

* Moved Benchmarks into ./Tests

* Moved UICatalog into ./Examples

* Moved UICatalog into ./Examples 2

* Moved tests into ./Tests

* Updated nuget
2025-05-29 14:08:47 -06:00

101 lines
2.3 KiB
C#

using System;
namespace UICatalog;
public static class NumberToWords
{
private static readonly string [] tens =
{
"", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"
};
private static readonly string [] units =
{
"Zero",
"One",
"Two",
"Three",
"Four",
"Five",
"Six",
"Seven",
"Eight",
"Nine",
"Ten",
"Eleven",
"Twelve",
"Thirteen",
"Fourteen",
"Fifteen",
"Sixteen",
"Seventeen",
"Eighteen",
"Nineteen"
};
public static string Convert (long i)
{
if (i < 20)
{
return units [i];
}
if (i < 100)
{
return tens [i / 10] + (i % 10 > 0 ? " " + Convert (i % 10) : "");
}
if (i < 1000)
{
return units [i / 100]
+ " Hundred"
+ (i % 100 > 0 ? " And " + Convert (i % 100) : "");
}
if (i < 100000)
{
return Convert (i / 1000)
+ " Thousand "
+ (i % 1000 > 0 ? " " + Convert (i % 1000) : "");
}
if (i < 10000000)
{
return Convert (i / 100000)
+ " Lakh "
+ (i % 100000 > 0 ? " " + Convert (i % 100000) : "");
}
if (i < 1000000000)
{
return Convert (i / 10000000)
+ " Crore "
+ (i % 10000000 > 0 ? " " + Convert (i % 10000000) : "");
}
return Convert (i / 1000000000)
+ " Arab "
+ (i % 1000000000 > 0 ? " " + Convert (i % 1000000000) : "");
}
public static string ConvertAmount (double amount)
{
try
{
var amount_int = (long)amount;
var amount_dec = (long)Math.Round ((amount - amount_int) * 100);
if (amount_dec == 0)
{
return Convert (amount_int) + " Only.";
}
return Convert (amount_int) + " Point " + Convert (amount_dec) + " Only.";
}
catch (Exception e)
{
throw new ArgumentOutOfRangeException (e.Message);
}
}
}