بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پیدا کردن تعداد اعشار یک عدد اعشاری و اضافه کردن یک واحد به آن
سلام. دوستان. عددی اعشاری دارم که متغیره. ممکنه یه موقع 12.0 بدست بیاد. یه موقع 45.569 و یا هر عدد دیگه ای. الان سوالم اینه که چطور میتونم تعداد اعشار های عدد رو پیدا کنم و یک واحد بهش اضافه کنم. مثلا اگر عدد من 4.0 بدست اومد. 1 واحد بهش اضافه شه و عدد نهایی بشه 5.0 . و اگر عدد من 68.437 بدست اومد، 0.001 واحد بهش اضافه شه و عدد نهایی بشه 68.438 . ممنون میشم اگر بلد بودید راهنمایی کنید. متشکر
برای این سوال 3 پاسخ وجود دارد.
مشاهده پاسخ صحیح

پاسخ به سوال
Reza
7 سال پیش
+1
0
سلام
double n = 23.324;
String nStr = n + "";
String result = "0.";
if (n - Math.floor(n) == 0) {// یعنی اعشار نداره
n++;
} else {// اعشار داره
int decimal_Number = (nStr.substring(nStr.indexOf(".") + 1)).length();
for (int i = 0; i < decimal_Number - 1; i++) {
result += "0";
}
result += "1";
n += Double.parseDouble(result);
}

پاسخ به سوال
Hadi
7 سال پیش
0
0
ممنون از زحمتت رضا جان . کد شما درسته اما ایردات double اذیت میکنه. مثلا
2.03 + 0.01
رو که باید بده 2.04، میده: 2.0399999999999996

پاسخ به سوال
Hadi
7 سال پیش
0
0
پاسخ صحیح
یکم جستجو کردم. ایراد double حل شد. کد نهایی رو پایین مینویسم:
double number = 23.565;
String nStr = n + "";
BigDecimal bd = new BigDecimal(n+"");
double TheFinalNumber = 0;
if (n - Math.floor(n) == 0){// یعنی اعشار نداره
BigDecimal bd2 = bd.add(new BigDecimal("1.0"));
TheFinalNumber = bd2.doubleValue();
} else {
BigDecimal bd2 = bd.add(new BigDecimal((1 / Math.pow(10, ((nStr.substring(nStr.indexOf(".") + 1)).length())))+""));
TheFinalNumber = bd2.doubleValue();
}
//عدد نهایی TheFinalNumber هست
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .