tiseza_oss_live/Models/ExchangeRate.cs

87 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Web;
namespace OSS.Models
{
public class ExchangeRate
{
public int Id { get; set; }
public string Currency { get; set; }
public string CurrencyDesc { get; set; }
public decimal Rate { get; set; }
public string ToString(){
return Currency+" "+Rate;
}
}
public class CurrencyUtils
{
private static readonly string[] ones = { "", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };
private static readonly string[] teens = { "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen", "Nineteen" };
private static readonly string[] tens = { "", "", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety" };
public static string ToWords(decimal number)
{
if (number == 0)
return "Zero";
// Split the number into integer and fractional parts
int integerPart = (int)Math.Floor(number);
int fractionalPart = (int)((number - integerPart) * 100);
// Convert integer part to words
string integerWords = ConvertIntegerToWords(integerPart);
// Convert fractional part to words
string fractionalWords = ConvertFractionalToWords(fractionalPart);
// Combine the words for integer and fractional parts
string result = integerWords + (fractionalWords != null? " and " + fractionalWords : "");
return result.Trim();
}
private static string ConvertIntegerToWords(int number)
{
if (number < 10)
return ones[number];
if (number < 20)
return teens[number - 10];
if (number < 100)
return tens[number / 10] + " " + ones[number % 10];
if (number < 1000)
return ones[number / 100] + " Hundred " + ConvertIntegerToWords(number % 100);
if (number < 1000000)
return ConvertIntegerToWords(number / 1000) + " Thousand " + ConvertIntegerToWords(number % 1000);
if (number < 1000000000)
return ConvertIntegerToWords(number / 1000000) + " Million " + ConvertIntegerToWords(number % 1000000);
return "Number out of range";
}
private static string ConvertFractionalToWords(int number)
{
if (number == 0)
return null;
if (number < 10)
return ones[number] + " Cents";
if (number < 20)
return teens[number - 10] + " Cents";
return tens[number / 10] + " " + ones[number % 10] + " Cents";
}
}
}