PDA

نسخه کامل مشاهده نسخه کامل : جداکردن قسمت اعشاری اعداد اعشاری



soheil1366
26-10-2006, 12:37
سلام
يك برنامه بنويسيد كه يك عدد اعشاري رو بگيره(float یا double) بعد قسمت اعشار رو جدا کنه وبه ما به صورت یک عدد صحیح نمایش بده و همچنین تعداد ارقام اعشار خورده
در ضمن با رشته و کاراکتر کاری انجام ندین
در ضمن ما نمیدونیم که عددfloat یا double یا...
یک نکته ی دیگه اینکه مثلا عدد 13 با عدد 13.0 برابر نیست چون دومی floating point هست و ممکنه بعد از چندین رقم اعشار دیگر صفر نباشه

EMPERATOUR
26-10-2006, 13:11
براي اينكه اعشار رو برداره بايد متغير تبديل به int اينتجر بشه

someone
26-10-2006, 13:32
سلام.
حتما با type casting آشنا هستيد.

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


و براي نشون دادن قسمت اعشاري هم كافي قسمت unbox شده رو از عدد اصلي كم كنيم:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

soheil1366
26-10-2006, 17:43
سلام
من گفتم که قسمت اعشار رو به صورت یک عدد طبیعی نشون بده و بدون علامت اعشارش
مثلاً عدد 12.24 رو به صورت دو عدد 12و24 نمایش بده
با این کارایی که شما گفتین اعشار به صورت یک عدد اعشاری نشون داده میشه
یعنی 0.24 و هدف من این نیست

someone
27-10-2006, 00:23
دوباره سلام.
کافیه دوباره از typecasting استفاده بشه به اين شكل:

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

اميدوارم مشكل حل شده باشه.البته حتما الگوريتم هاي بهتري هم وجود داره.
ممنون.

soheil1366
27-10-2006, 10:53
سلام
خیلی ممنون از برنامتون ولی باز هم یک مشکل کوچیک وجود داره که من در اولین پست به اون اشاره کردم واینه که در اعداد اعشاری معلوم نیست که تا چند عدد اعشاری صفر وجود داره مثلا اگر شما در برنامه عدد 1234.1234 رو وارد کنید میبینید که درون یک حلقه ی بینهایت می افته ودلیلش اینه که این عدد در کامپیوتر به صورت 1234.123399999999 ذخیره میشه
پس این روش نمیتونه روش کامل و بدونه نقصی باشه و اصلا من این برنامه رو خواستم تا یک نفر یک روش حل(غیر از این روش) و بدون نقص پیشنهاد کنه شما هم اگر روش دیگه ای به ذهنتون رسید به من کمک کنید
به حرحال باز هم از توجه شما ممنونم

someone
27-10-2006, 23:40
سلام.
اول باید یه تشکر کنم از شما به خاطر مسئله ای که مطرح کردید.
ممکنه در ظاهر زیاد مهم نباشه ولی بسیار ارزشمند هست.
در ضمن باید بگم این دومین بحثی هست که با هم داریم و کاملا مشخصه که شما مسلط هستید.
همونطور که میدونید double شامل 64 bits هست.
1 bit برای علامت
11 bits برای توان
52 bits برای قسمت اعشاری وعدد
به ازای هر عدد صحیح تا جایی که لازم باشه فضا در نظر گرفته میشه به اضافه ی اینکه میشه برای
قسمت اعشاری (یا عدد های بزرگ) از توان استفاده کرد.
تغییراتی در برنامه دادم که مشخصه.
اگه عدد شما صرفا اعشاری باشه تا 6 رقم دقت رو میشه با این کد حساب کرد.
اما با توجه به چیزهای که گفته شد با اضافه کردن هر رقم صحیح به عدد مورد نظر از دقت
قسمت اعشار کاسته میشه. مثلا برای عدد 714 دقت به چهار رقم اعشار میرسه وبه همین ترتیب.
یعنی خروجی برنامه به ازای 714.4236 عدد 4236 هست اما اگه 714.42365 رو نمیتونه حساب کنه

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

راستي بايد اضافه كنم اگه رقم آخر قسمت اعشاري(قسمت كم ارزش) از 5 كوچكتر باشه خودش
در حافظه قرار ميگيره و اگه بزرگتر از 5 باشه , يك رقم از عدد آخر كم و دنباله به صورت 999..در مياد.
مثلا : 1234.124 به صورت 1234.124000000000000 و عدد 1234.127 به صورت 1234.12699999999999

soheil1366
28-10-2006, 01:05
سلام
خيلي ممنون از اينكه در اين بحث با من همكاري كردين و منو راهنمايي كردين
در ضمن عدد1234.1234 در كامپيوتر من 1234.12399999 نمايش داده ميشه و من فكر ميكنم اين نكته اي رو كه شما در مورد رقم آخر قسمت اعشاري گفتين به تعداد ارقام اعشار خورده هم ربطي داشته باشه يا حداقل تا جايي كه من امتحان كردم اينجوري بوده
باز هم از توجه شما ممنونم

someone
29-10-2006, 01:15
بله كاملا درسته.هونطور كه گفتيد به تعداد رقم هاي اعشار و هم به تعداد رقم هاي صحيح
بستگي داره.
خواهش ميكنم خوشحال ميشم بتونم كمكي كرده باشم.
باز ممنون به خاطر بحثي كه مطرح كرديد.

fatimarajabi
23-12-2010, 13:54
سلام
برای کم کردن تعداد ارقام اعشار نوع داده double باید چکار کرد البته در c# ؟ممنون میشم کمکم کنید

Farbod3113
01-01-2011, 15:49
سلام
يك برنامه بنويسيد كه يك عدد اعشاري رو بگيره(float یا double) بعد قسمت اعشار رو جدا کنه وبه ما به صورت یک عدد صحیح نمایش بده و همچنین تعداد ارقام اعشار خورده
در ضمن با رشته و کاراکتر کاری انجام ندین
در ضمن ما نمیدونیم که عددfloat یا double یا...
یک نکته ی دیگه اینکه مثلا عدد 13 با عدد 13.0 برابر نیست چون دومی floating point هست و ممکنه بعد از چندین رقم اعشار دیگر صفر نباشه

سلام
اگه ممکنه همین سورس رو با c (نه++c) بذارید ممنون:20:

Farbod3113
01-01-2011, 17:05
سلام
برای کم کردن تعداد ارقام اعشار نوع داده double باید چکار کرد البته در c# ؟ممنون میشم کمکم کنید

در c باید هنگام چاپ 1.2f % تعداد اعشار رو دو تا میکنه 1.4f٪ اون رو 4 تا میکنه شاید در C# هم همین طور باشه در غیر این صورت شرمنده.:13:

fatima0021
03-10-2016, 19:54
سلام.میشه لطفا به طور خیلی خیلی ساده بگید چه جوری قسمت اعشار یک عدد رو جدا کنم و نمایش بدم؟ قسمت صحیحش که با متد truncate کلاس math قابل حله .:n37:

n00b
03-10-2016, 23:18
سلام.میشه لطفا به طور خیلی خیلی ساده بگید چه جوری قسمت اعشار یک عدد رو جدا کنم و نمایش بدم؟ قسمت صحیحش که با متد truncate کلاس math قابل حله .:n37:
***************
سلام../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
******************
خیلی ساده می تونید قسمت صحیح رو از کل عدد اعشاری کم کنید و باقی مانده برابر با قسمت اعشاری خواهد بود.../// برای نمایش برای مثال 3 رقم اعشار به شکل صحیح هم کافیه قسمت اعشاری رو در 10 به توان 3 که میشه 1000 ضرب کنید.../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
*********************

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
*******************
در صورتی که هدفتون فقط "نمایش" قسمت اعشاری هست و قصد انجام محاسبات ریاضی روی قسمت اعشاری رو ندارید// می تونید از روش زیر استفاده کنید../// قسمت صحیح داخل [s[0 و قسمت اعشاری داخل [s[1 ذخیره میشه../// [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]
***************

برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
*******************
موفق باشید! [ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]

Navid66584
14-12-2016, 20:07
سلام
يك برنامه بنويسيد كه يك عدد اعشاري رو بگيره(float یا double) بعد قسمت اعشار رو جدا کنه وبه ما به صورت یک عدد صحیح نمایش بده و همچنین تعداد ارقام اعشار خورده
در ضمن با رشته و کاراکتر کاری انجام ندین
در ضمن ما نمیدونیم که عددfloat یا double یا...
یک نکته ی دیگه اینکه مثلا عدد 13 با عدد 13.0 برابر نیست چون دومی floating point هست و ممکنه بعد از چندین رقم اعشار دیگر صفر نباشه
سلام دوست عزیز
میتونی یه کاری کنی
یه متغیر int تعریف کنی
بعد کاربر اون متغیر رو وارد کنه (می تونه عدد اعشار باشه)
و بعد سیستم همون متغیر رو چاپ کنه
چون int عدد صحیح چاپ میشه