PDA

View Full Version : سوال: نشان دادن عدد کامل double



man_iran
جمعه 11 مرداد 1387, 22:32 عصر
سلام
من یه عدد double توی برنامه دارم. وقتی اون را توی تکست باکس می فرستم اون را به صورت مدل ریاضی در میاره
البته توی تمام قسمت های برنامه (محاسبات و...) اون را به این صورت حساب می کنه
بهتر بگم خصلت double اینطوریه!

حالا اگر بخوام به صورت معمولی نشون بده باید چه کار کنم ؟

نمونه کد :


object a = 99999999999999999999999999999999999999999999999999 999999999999999999999999999999999999999999.0;
txtName1.Text = a.ToString();


توی تکست باکس این را نشون می ده :


1E+92

Salar Ashgi
جمعه 11 مرداد 1387, 23:12 عصر
به نظر من بهتره عدد رو بصورت String در نظر بگیرید و روی اون کار کنید :



string num = "999999999999999999999999999999999999999999.9999";
textBox1.Text = num;
.
.
.

man_iran
جمعه 11 مرداد 1387, 23:23 عصر
به نظر من بهتره عدد رو بصورت String در نظر بگیرید و روی اون کار کنید :



string num = "999999999999999999999999999999999999999999.9999";
textBox1.Text = num;
.
.
.


:متعجب::متعجب:
سالار جان این که فرقی نمی کنه
شما همین را برای یه محاسبه به دابل تبدیل کن بعد برای نمایش توی تکست باکس به استرینگ تبدیل کن. می بینی باز به صورت مدل ریاضی تبدیل می شه
روشی که شما می گید برای وقتی خوبه که من می خوام عدد را به صورت استرینگ در برنامه به کار ببرم و محاسباتی انجام ندم.

روش دیگه ؟

man_iran
شنبه 12 مرداد 1387, 10:03 صبح
یعنی هیچ راهی نیست!!
مگه می شه :گیج:

Salar Ashgi
شنبه 12 مرداد 1387, 11:18 صبح
ببین دوست عزیز این عدد double که شما گفتید داره میشه مثل عدد پی ، هر نوع داده ای

بالاخره یک محدوده ای داره و بیش از اون محدوده نمی تونه قبول کنه ، و محدوده دقت دابل

بین 15 - 16 رقم است ، و بیشترین دقت اعشاری برای نوع داده decimal با دقت 28 - 29

رقم میباشد ، و برای محاسبات با دقت بیشتر این نوع داده ای مناسب است !!!

در ضمن منظور من این بود که شما عملیات ریاضی رو روی string ها سربارگذاری کنید

(Operator Overloading ) که اون وقت میشه روی اون با هر دقتی هر عملی انجام داد !!!

اگه سوالی بود باز در خدمتم !!!

man_iran
شنبه 12 مرداد 1387, 12:39 عصر
در ضمن منظور من این بود که شما عملیات ریاضی رو روی string ها سربارگذاری کنید

(Operator Overloading ) که اون وقت میشه روی اون با هر دقتی هر عملی انجام داد !!!

اگه سوالی بود باز در خدمتم !!!

چطوری ؟
می شه یه مثال بزنید.

Leon_pro
شنبه 12 مرداد 1387, 15:35 عصر
double d1 = 999999999999999;
double d2 = 2435234;
d1 = d1 + d2;
textBox1.Text = Convert.ToDecimal(d1).ToString();

man_iran
شنبه 12 مرداد 1387, 20:04 عصر
double d1 = 999999999999999;
double d2 = 2435234;
d1 = d1 + d2;
textBox1.Text = Convert.ToDecimal(d1).ToString();

Leon_pro جان این روشی که شما می گید جوابگو نیست! چون همان طور که قبلا گفتم محدوده عدد من خیلی زیاده و فقط دابل اون را قبول می کنه.
یه نگاه به کد زیر بندازید متوجه می شید :



double d1 = 99999999999999999999999999999999999999999999999999 .0;
double d2 = 2435234;
d1 = d1 + d2;
textBox1.Text = Convert.ToDecimal(d1).ToString();


البته یه روش دیگه هم سالار گفت (با استفاده از استرینگ). ولی من نحوه کار با آن را نمی دونم.
لطفا راهنمایی کنید.

agtabesh
شنبه 12 مرداد 1387, 22:12 عصر
هیچ کاری نمی شه کرد...
شما باید به جای اینکه عملیات ریاضی رو ، رو double انجام بدید ، رو یه آرایه از نوع عدد انجام بدید
من یه برنامه نوشتم که 2 رو به توان هر عدد که بخواین می رسونه
اگه سوالی بود در خدمتیم..

http://barnamenevis.org/forum/attachment.php?attachmentid=20691&d=1216473581

man_iran
یک شنبه 13 مرداد 1387, 11:38 صبح
من یه برنامه نوشتم که 2 رو به توان هر عدد که بخواین می رسونه


شما یه عدد بزرگ شبیه عددی که قبلا گفتم بزنید می بینید که جواب نمی ده! چون محدودی int کمه

فقط با دابل می تونم کار کنم و استرینگ.
دابل که می گید نمی شه! من هم به این نتیجه رسیدم چون هر کاری می کنم نمی شه

ولی روشی که سالار گفت را کسی بلد نیست ؟ (با استفاده از استرینگ)

لطفا کمک کنید. :لبخندساده:

man_iran
دوشنبه 14 مرداد 1387, 09:52 صبح
یعنی کسی نمی تونه در این رابطه کمک کنه!! :ناراحت:

شما اگر می خواید یه عدد خیلی بزرگ را به مبنای 2 تبدیل کنید چه کار می کنید؟