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