PDA

View Full Version : مشکل در جمع و تفریق اعداد !!



alnajon
یک شنبه 29 مرداد 1391, 17:33 عصر
با سلام ....
ببخشید من یه مشکلی دارم !

من تو نرم افزارم یه تکست باکس دارم و یه لیست باکس و یه باتن ....

می خواهم وقتی روی باتن کلیک میکنم اون عددی که تو تکست باکس وارد شده منهای 1 بشه و نتیجه بره تو لیست باکس .

از این کد استفاده میکنم :


list1.Items.Add(Convert.ToInt16(TextBox1.Text) + 1);


این روش روی اعداد کوچک مثل 10 یا 30 کار میکنه ولی روی اعداد بزرگ هنگام زدن باتن خطا میده .

میشه راهنماییم کنین ...

راستی هر کی روش جمع کردن لیست میهن بلاگ رو داره بگه ....

خیلی ممنون

veniz2008
یک شنبه 29 مرداد 1391, 17:59 عصر
سلام. به جای int16 از int32 استفاده کن.

felfely
یک شنبه 29 مرداد 1391, 18:03 عصر
سلام
برای جمع دو عدد خیلی بزرگ باید از یه کلاس استفاده کنین مثله این:



class WWLN
{
int[] a, b ,c;
string s;
int i;
public string Sum(string x, string y)
{

a = new int[x.Length];
b = new int[y.Length];

//......................
i = a.Length;
foreach (char ch in x)
{
i--;
a[i] = Convert.ToInt32(ch.ToString());
}

//......................
i = b.Length;
foreach (char ch in y)
{
i--;
b[i] = Convert.ToInt32(ch.ToString());
}

i = x.Length > y.Length ? x.Length : y.Length;
c = new int[i+1];
for (int k = 0; k < c.Length; k++)
c[k] = 0;
//.................................................. ....
//.................................................. ....

for (int j = 0; j < c.Length-1; j++)
{
if (j < a.Length & j < b.Length)
{
if (a[j] + b[j] + c[j] < 10)
{
c[j] = a[j] + b[j];
}
else if (a[j] + b[j] + c[j] >= 10)
{
c[j] += (a[j] + b[j]) - 10;
c[j + 1] += 1;
}
}
else if (j >= a.Length & j < b.Length)
{
c[j] += b[j];
}
else if (j < a.Length & j >= b.Length)
{
c[j] += a[j];
}
}

s = null;
for (int j = c.Length - 1; j >= 0; j--)
{
s += c[j].ToString();
}

return s;
}
}

amir4015
یک شنبه 29 مرداد 1391, 18:04 عصر
سلام از ToInt65 استفاده كن
يا اگه عدد خيلي بزرگ از double
و اگر ممكن اعشاري هم با شه از decimal استفاده كن

مهرداد صفا
یک شنبه 29 مرداد 1391, 18:10 عصر
با سلام ....
ببخشید من یه مشکلی دارم !

من تو نرم افزارم یه تکست باکس دارم و یه لیست باکس و یه باتن ....

می خواهم وقتی روی باتن کلیک میکنم اون عددی که تو تکست باکس وارد شده منهای 1 بشه و نتیجه بره تو لیست باکس .

از این کد استفاده میکنم :


list1.Items.Add(Convert.ToInt16(TextBox1.Text) + 1);


این روش روی اعداد کوچک مثل 10 یا 30 کار میکنه ولی روی اعداد بزرگ هنگام زدن باتن خطا میده .

میشه راهنماییم کنین ...
سلام
دامنه اعدادی که میتوان در یک Int16 قرار داد از -32768 تا 32767 است. برای اعداد بزرگتر میتوانید از int32 یا int64 استفاده کنید و برای اعداد مثبت هم میتوانید ازUint64 استفاده کنید که میتواند اعداد کوچکتر از 2 به توان 64 را در خود نگهدارد. برای تبدیل به اینصورت عمل کنید:

list1.Items.Add(Convert.ToUint64(TextBox1.Text) + 1);

Farshid007
یک شنبه 29 مرداد 1391, 22:09 عصر
با سلام ....
ببخشید من یه مشکلی دارم !

من تو نرم افزارم یه تکست باکس دارم و یه لیست باکس و یه باتن ....

می خواهم وقتی روی باتن کلیک میکنم اون عددی که تو تکست باکس وارد شده منهای 1 بشه و نتیجه بره تو لیست باکس .

از این کد استفاده میکنم :


list1.Items.Add(Convert.ToInt16(TextBox1.Text) + 1);


این روش روی اعداد کوچک مثل 10 یا 30 کار میکنه ولی روی اعداد بزرگ هنگام زدن باتن خطا میده .

میشه راهنماییم کنین ...

راستی هر کی روش جمع کردن لیست میهن بلاگ رو داره بگه ....

خیلی ممنون
شما که گفتید منهای یک اما اونجور که پیداست به اضافه یک شده