Thursday, August 18, 2011

How to convert a Number to words

This article I am going to discuss function which convert numeric value to word  for that we create one web page which return convert number to word.
To achieve this I  create one simple webpage which have one textbox and one button when click on button number is converted to text and display in label see below image.


ConvertNumber
I have create on class which convert given number to text

static class NumberToWord
{
private static string[] _ones =
{
"zero",
"one",
"two",
"three",
"four",
"five",
"six",
"seven",
"eight",
"nine"
};

private static string[] _teens =
{
"ten",
"eleven",
"twelve",
"thirteen",
"fourteen",
"fifteen",
"sixteen",
"seventeen",
"eighteen",
"nineteen"
};

private static string[] _tens =
{
"",
"ten",
"twenty",
"thirty",
"forty",
"fifty",
"sixty",
"seventy",
"eighty",
"ninety"
};

// US Nnumbering:
private static string[] _thousands =
{
"",
"thousand",
"million",
"billion",
"trillion",
"quadrillion"
};

/// 
/// Converts a numeric value to words suitable for the portion of
/// a check that writes out the amount.
/// 
/// Value to be converted
/// 
public static string Convert(decimal value)
{
string digits, temp;
bool showThousands = false;
bool allZeros = true;
StringBuilder builder = new StringBuilder();
// Convert integer portion of value to string
digits = ((long)value).ToString();
// Traverse characters in reverse order
for (int i = digits.Length - 1; i >= 0; i--)
{
int ndigit = (int)(digits[i] - '0');
int column = (digits.Length - (i + 1));

// Determine if ones, tens, or hundreds column
switch (column % 3)
{
case 0:        // Ones position
showThousands = true;
if (i == 0)
{
// First digit in number (last in loop)
temp = String.Format("{0} ", _ones[ndigit]);
}
else if (digits[i - 1] == '1')
{
// This digit is part of "teen" value
temp = String.Format("{0} ", _teens[ndigit]);
// Skip tens position
i--;
}
else if (ndigit != 0)
{
// Any non-zero digit
temp = String.Format("{0} ", _ones[ndigit]);
}
else
{
// This digit is zero. If digit in tens and hundreds
// column are also zero, don't show "thousands"
temp = String.Empty;
// Test for non-zero digit in this grouping
if (digits[i - 1] != '0' || (i > 1 && digits[i - 2] != '0'))
showThousands = true;
else
showThousands = false;
}

// Show "thousands" if non-zero in grouping
if (showThousands)
{
if (column > 0)
{
temp = String.Format("{0}{1}{2}",
temp,
_thousands[column / 3],
//allZeros ? " " : ", ");
allZeros ? " " : " ");
}
// Indicate non-zero digit encountered
allZeros = false;
}
builder.Insert(0, temp);
break;

case 1:        // Tens column
if (ndigit > 0)
{
temp = String.Format("{0}{1}",
_tens[ndigit],
(digits[i + 1] != '0') ? "-" : " ");
builder.Insert(0, temp);
}
break;

case 2:        // Hundreds column
if (ndigit > 0)
{
temp = String.Format("{0} hundred ", _ones[ndigit]);
builder.Insert(0, temp);
}
break;
}
}

// Append fractional portion/cents
builder.AppendFormat(" DOLLARS and {0:00} / 100", (value - (long)value) * 100);

// Capitalize first letter
return String.Format("{0}{1}",
Char.ToUpper(builder[0]),
builder.ToString(1, builder.Length - 1));
}
}

I made following code on button click event
protected void btnconvert_Click(object sender, EventArgs e)
{
decimal number;
if(!string.IsNullOrEmpty(txtnumber.Text)&& decimal.TryParse(txtnumber.Text.Trim(),out number))
{
lblText.Text=NumberToWord.Convert(number);
}

}

it covert given number to word. This may be useful for you. Stay turned for more.
Thanks for reading. Happy coding!!

Wednesday, August 3, 2011

New Option dialog box enhancement in Visual studio 2010

I was working on start up page for visual studio 2010 at that time I have been notice one enhancement done in visual studio 2010 IDE with tool--> options dialog box.when we open option dialog box  there is new Show all settings checkbox is show. It is for display all setting or not by default this checkbox is not checked so it is shown with minimum options so it is load fast.see below figure
optionlesss

after check Show all settings checkbox it load all setting  see below figure
OptionAll
This information will add +1 in new visual studio 2010 IDE enhancement. Thanks for reading.
Kirti Darji