سلام دوستان.
من یه نمونه کد میخوام که بتونم اعداد رو به حروف انگلیسی بنویسم.
یعنی من یه عددی دارم که میخوام اینو جدا جدا کنه و واسم به حروف انگلیسی بنویسه این چند تومنه.
سلام دوستان.
من یه نمونه کد میخوام که بتونم اعداد رو به حروف انگلیسی بنویسم.
یعنی من یه عددی دارم که میخوام اینو جدا جدا کنه و واسم به حروف انگلیسی بنویسه این چند تومنه.
با سلام خدمت شما
این کدهای تبدیل عدد به حروف فارسیه فقط لازمه جای حروف فارسی معادل انگلیسیشو بنویسین مثلا جای "و" میشه And
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace NFMS
{
class PNumberTString
{
private static string[] yakan = new string[10] { "صفر", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه" };
private static string[] dahgan = new string[10] { "", "", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود" };
private static string[] dahyek = new string[10] { "ده", "یازده", "دوازده", "سیزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده" };
private static string[] sadgan = new string[10] { "", "یکصد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد" };
private static string[] basex = new string[5] { "", "هزار", "میلیون", "میلیارد", "تریلیون" };
private static string getnum3(int num3)
{
string s = "";
int d3, d12;
d12 = num3 % 100;
d3 = num3 / 100;
if (d3 != 0)
s = sadgan[d3] + " و ";
if ((d12 >= 10) && (d12 <= 19))
{
s = s + dahyek[d12 - 10];
}
else
{
int d2 = d12 / 10;
if (d2 != 0)
s = s + dahgan[d2] + " و ";
int d1 = d12 % 10;
if (d1 != 0)
s = s + yakan[d1] + " و ";
s = s.Substring(0, s.Length - 3);
};
return s;
}
public string num2str(string snum)
{
string stotal = "";
if(snum =="") return "صفر";
if (snum == "0")
{
return yakan[0];
}
else
{
snum = snum.PadLeft(((snum.Length - 1) / 3 + 1) * 3, '0');
int L = snum.Length / 3 - 1;
for (int i = 0; i <= L; i++)
{
int b = int.Parse(snum.Substring(i * 3, 3));
if (b != 0)
stotal = stotal + getnum3(b) + " " + basex[L - i] + " و ";
}
stotal = stotal.Substring(0, stotal.Length - 3);
}
return stotal;
}
}
}
موفق باشین
بایت بایت
چجوری باید ازش استفاده کنیم؟
میخوام تو یه لیبل نوشته بشه
ابزار txtProNet (تكست باكس حرفه اي) رو ميتونيد از اين لينك يا از امضاي من دانلود كنيد. علاوه بر امكاني كه شما لازم داريد امكانات سريع و راحت تري رو هم در اختيار شما قرار ميده كه ديگه نياز به كد نويسي اضافي نداريد
فهمیدم چجوری میشه ازش استفاده کرد.
NumberToString dd = new NumberToString();
lbltakhfifbeh4.Text = dd.num2str(txttakhfif4.Text);
سلام اعداد دارای ممیز رو قبول نمیکنه
باور کن قبول نمیکنه اینم اخطار :
int b = int.Parse(snum.Substring(i * 3,3));
Input string was not in a correct format.
درسته که قبول نمیکنه ولی توسعه کد برای قبول کردنش سخت نیست
همون طور که دوستمون گفتن کافیه از تابع دوبار استفاده بشه
یک بار برای عدد قبل از ممیز
یک بار برای عدد بعد از ممیز
حالا با توجه به تعداد ارقام عدد بعد از ممیز هم بایک سویچ کیس میشه دهم صدم هزارم و ... رو هم مشخص کرد
با تشکر : هر کاری کردم متصفانه موفق نشدم میشه کد بالا رو تغییر بدین برای قبول کردن . تا 3 رقم بعد ممیز رو قبول میکنه بقیه ش عمل نمیکنه
شما اگه یه کم کرد دست کاری کنین همونطور که دوستان گفتن جواب میده راحت
NumberToString converter = new NumberToString();
if(!textBox1.Text.Contains("."))
textBox2.Text = converter.num2str(textBox1.Text);
else
{
string[] str = textBox1.Text.Split('.');
textBox2.Text = converter.num2str(str[0]);
textBox2.Text += " ممیز ";
textBox2.Text += converter.num2str(str[1]);
switch (str[1].Length)
{
case 1:
textBox2.Text += " دهم ";
break;
case 2:
textBox2.Text += " صدم ";
break;
case 3:
textBox2.Text += " هزارم ";
break;
default:
break;
}
البته میتونین همینو اصولی تر هم بنویسین و البته این تا 3 رقم اعشار درست کار میکنه خودتون بعد از هزارم خواستین اضافه کنین
نشد جواب شما اینطوریه!!!!!
یکصد و بیست و سه ,چهارصد و پنجاه و شش هزار
باسلام
قبل از اینکه کار تبدیل رو شروع کنین یه متد قرار بدین تا num یا decimal بودن مقدار ورودی رو چک کنه و عملی متناسب با هر کدوم رو به اجرا بگذاره یه چیزی مثل این :
public string DecimalToWords(decimal d)
{
var formatted = d.ToString();
if(formatted.Contains("."))
{
string[] sides = formatted.Split(".");
return NumberToWords(Int32.Parse(sides[0])) + " and " + NumberToWords(Int32.Parse(sides[1]));
}
else
{
return NumberToWords(Convert.ToInt32(d));
}
}
بازم موفق نشدم . کد شما کلا اخطار میده اقا خوخان
سلام کلاس زیر تقریبا کامله:
با سلام لطفا الگوریتم تبدیل عدد به حروف را پاسخ دهید
دوست عزیز فقط کافی بود قبل از اینکه عدد دریافتی از تکست باکس را مستقیم به کلاس می فرستادی از کد زیر استفاده می کردی
lbltakhfifbeh4.Text = dd.num2str(Convert.ToDouble(txttakhfif4.Text).ToSt ring());
خیلی خوب بود . ممنونم ازتون
با سلام دوستان کسی .dll عدد به حروف داره...
یا اینکه بتونه کمک کنه که چطور میتون کدهای تبدیل عدد به حروف به صورت یک کلاس داشت باشم که در تمام پروژه بشه ازش استفاده کرد
اینم یه کلاس
class AddToHarf
{
private static string[] yakan = new string[10] { "صفر", "یک", "دو", "سه", "چهار", "پنج", "شش", "هفت", "هشت", "نه" };
private static string[] dahgan = new string[10] { "", "", "بیست", "سی", "چهل", "پنجاه", "شصت", "هفتاد", "هشتاد", "نود" };
private static string[] dahyek = new string[10] { "ده", "یازده", "دوازده", "سیزده", "چهارده", "پانزده", "شانزده", "هفده", "هجده", "نوزده" };
private static string[] sadgan = new string[10] { "", "یکصد", "دویست", "سیصد", "چهارصد", "پانصد", "ششصد", "هفتصد", "هشتصد", "نهصد" };
private static string[] basex = new string[5] { "", "هزار", "میلیون", "میلیارد", "تریلیون" };
private static string getnum3(int num3)
{
string s = "";
int d3, d12;
d12 = num3 % 100;
d3 = num3 / 100;
if (d3 != 0)
s = sadgan[d3] + " و ";
if ((d12 >= 10) && (d12 <= 19))
{
s = s + dahyek[d12 - 10];
}
else
{
int d2 = d12 / 10;
if (d2 != 0)
s = s + dahgan[d2] + " و ";
int d1 = d12 % 10;
if (d1 != 0)
s = s + yakan[d1] + " و ";
s = s.Substring(0, s.Length - 3);
};
return s;
}
static string int2str(string snum)
{
string stotal = "";
if (snum == "") return "";
if (snum == "0")
{
return yakan[0];
}
else
{
/// <summary>
/// Rcode.ir
/// Ramin.mor47@gmail.com
/// </summary>
snum = snum.PadLeft(((snum.Length - 1) / 3 + 1) * 3, '0');
int L = snum.Length / 3 - 1;
for (int i = 0; i <= L; i++)
{
int b = int.Parse(snum.Substring(i * 3, 3));
if (b != 0)
stotal = stotal + getnum3(b) + " " + basex[L - i] + " و ";
}
stotal = stotal.Substring(0, stotal.Length - 3);
}
return stotal;
}
public static string GetStr(string number)
{
if (!number.Contains("."))
return int2str(number);
else
{
/// <summary>
/// Rcode.ir
/// Ramin.mor47@gmail.com
/// </summary>
string[] str = number.Split('.');
string result = int2str(str[0]);
string right = str[1].TrimEnd(new char[] { '0' });
if (right.Length > 0)
{
result += "ممیز ";
}
result += int2str(right);
switch (right.Length)
{
case 1:
result += " دهم ";
break;
case 2:
result += " صدم ";
break;
case 3:
result += " هزارم ";
break;
case 4:
result += " ده هزارم ";
break;
case 5:
result += " صد هزارم ";
break;
default:
break;
}
return result;
}
}
}
خب برای استفاده از اون هم به این صورت میتونید استفاده کنی:
textBox2.Text= AddToHarf.GetStr(textBox1.Text);در صورت داشتن هرگونه سوالی مطرح بفرمایید.