+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.3هزار بازدید
+1 امتیاز
1 پاسخ 2.2هزار بازدید
0 امتیاز
1 پاسخ 1.1هزار بازدید
+2 امتیاز
1 پاسخ 718 بازدید
0 امتیاز
1 پاسخ 2.3هزار بازدید
0 امتیاز
1 پاسخ 361 بازدید
0 امتیاز
1 پاسخ 594 بازدید
...