آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

دقیق حساب نشدن محاسبات به وسیله float

صادی  8 سال پیش  8 سال پیش
0 0

سلام به همه دوستان عزیزم . 

من میخوام ی سری عملیات محاسباتی انجام بدم به عنوان مثال : « که یک پا چند اینچ میشه ».  بعد این باید جوابش بشه 12 ولی جواب رو به من میده 

11.999999   

یا به عنوان مثال وقتی می خواد حساب کنه که یک کیلومتر چند متره به جای اینکه جواب رو به من 1000 بده میده 1000.00006  

حسابی گیر کردم .. دستتون درد نکنه 

ممنون میشم راهی اگ داره بهم بگید مچکرم 

0 0
خیلی وقت پیش به این مشکل برخوردم ، این خطا توی float وجود داره ، از double استفاده کنید ، کاملا یادم نیست مشکل چی بود و چطوری حل کردم !ولی همین دقیق حساب نشدن و خورده آوردن ها بود ، دقیقا هم یادم نیست با float این مشکل رو داشتم یا با double ! (8 سال پیش)
0 0
ممنون از double استفاده کردم تقریبا مشکل حل شد . ولی باز هم با ی سری از محاسبات مشکل دارم . مثلا یک فرسخ میشه 6.24 کیلومتر ولی جواب به من میده 6.2399999999999999 نمیدونم چرا اینطوری میکنه واقعا (8 سال پیش)
0 0
فکر نمی کنید اون خطای داده نیست و اتفاقا خیلی جاها ما نیاز داریم بهش؟ این مقدار صحیح رو بهتون میده int b = Math.round(float a); (8 سال پیش)
0 0
مشکل اینه که اعداد صحیح رو هم اعشاری میده مثلا ی عدد که مطمئن هستی میشه 1000 رو میده 1000.00006 یا مثلا میده 999.99996 مشکل اینه (8 سال پیش)
 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
nooriDeveloper  8 سال پیش
+1 0

خوب دقت کنید وقتی ازfloatیا  double استفاده میکنید برای محاسبات اعداد اول توی سیستم بصورت باینری در میان و همونطور که تقسیم 1/3 در سیستم دهدهی هیچوقت دقیق نیست و بصورت 0.333333 بیشمار 3 هستش، 1/10 هم در سیستم دودویی هیچوقت دقیقا 0.1 نیست و کمی خطا داریم برای همین تو محاسبات با خطای جزیی مواجه میشیم ضمنا حتی اگه با استفاده از کد int b = Math.round(float a) هم برای رند کردن استفاده کنید بازهم تضمینی برای محاسبه دقیق وجود نداره و میتونه توی چند محاسبه پی در پی عددی اشتباه رو نشون بده راه حل درست اینه که از اعداد دسیمال استفاده کنید یعنیBigDecimal

ضمنا توی لینک زیر بطور مفصل در این مورد توضیح داده شده:

لینک 1 و لینک 2

0 0
مچکرم از پاسخگویی تون . کاملا مفید بود . :) (8 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .