+1 امتیاز
قبل در برنامه نویسی توسط (7.2هزار امتیاز)
ویرایش شده قبل توسط

قطعه کد زیر را در نظر بگیرید:

double a=1000000000000L;
double b=.000000000003;
double c=a/b;

مقدار برگشتی برای c*30 معادل 

9.999999999999999E24

می باشد ، که باید 1E25 باشد

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

1 پاسخ

+1 امتیاز
قبل توسط (7.2هزار امتیاز)
انتخاب شده قبل توسط
 
بهترین پاسخ

برای حل این مشکی می توانید از BigDecimal به جای double استفاده نمایید.

این کلاس، عدد را به جای تبدیل به اعشار به صورت صورت و مخرج نگه داری می نماید.

یعنی

BigDecimal a=new BigDecimal(1000000000000L);
BigDecimal b=new BigDecimal(.000000000003);
BigDecimal c=a.divide(b);

سوالات مشابه

0 امتیاز
2 پاسخ 5.1هزار بازدید
+1 امتیاز
1 پاسخ 2.1هزار بازدید
0 امتیاز
1 پاسخ 957 بازدید
+2 امتیاز
1 پاسخ 659 بازدید
0 امتیاز
1 پاسخ 2.1هزار بازدید
0 امتیاز
1 پاسخ 308 بازدید
0 امتیاز
1 پاسخ 502 بازدید
...