PDA

View Full Version : تعیین دقت اعشار در ++C



vasilopita
پنج شنبه 04 خرداد 1391, 11:03 صبح
سلام دوستان. چطور می تونم تو ++C دقت اعشار یک متغیر float رو تعیین کنم؟ دقت کنید نمی خوام فقط موقع چاپ عدد دقت اعشار رو در نظر بگیره بلکه دقیقا اعداد اضافه رو می خوام بریزه دور. یه تابع پیدا کردم به اسم:
setprecision()
ولی به نظر اینکاره نیست. راهنمایی کنید لطفا. ممنون

Ananas
پنج شنبه 04 خرداد 1391, 16:08 عصر
سلام.
دقت نوع float به دلیل 32 بیت بودنش تا 6 الی 7 رقم بیشتر نمیشه و میتونی از double که 64 بیتیه و یا long double که 80 بیتیه استفاده کنی. اما دقت محاسبات سخت افزار هم با تنظیم FPU میتونه کم و زیاد بشه. لینک زیر رو ببین:
http://msdn.microsoft.com/en-us/library/windows/hardware/ff565388%28v=vs.85%29.aspx
وقتی FPU رو حالت دقت کم باشه اگه متغیر long double هم انتخاب کنید بازم مثلا 6 الی 7 رقم بیشتر دقت نداره.FPU تو حالت دقت محاسبات کم، برای بالا بردن سرعت محاسبات استفاده داره. اما نمیدونم ازینی که تو حالت معمولیه بیشتر هم میشه یا نه. مثلا ماشین حساب ویندوز تا 32 رقم اعشار دقت داره. شاید همچین کاری کرده باشه و دقت محاسباتش زیاد شده که در این صورت باید از نوع داده مثلا 128 بیتی استفاده بشه دیگه float 32 بیتی جواب نمیده.