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

پیدا کردن تعداد اعشار یک عدد اعشاری و اضافه کردن یک واحد به آن

Hadi  7 سال پیش  7 سال پیش
0 0

سلام. دوستان. عددی اعشاری دارم که متغیره. ممکنه یه موقع 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);
        }
0 0
ممنون رضا جان از زحمتت. این کد درسته.اما ایرادات double اذیت میکنه. مثلا '2.03+0.01' رو که باید بده '2.03' میده: '2.0399999999999996'. (7 سال پیش)
0 0
نه کد بالا در همه ی موارد درست کار نمی کنه. یه مواقعی برای اعدای که به عدد فرد ختم میشن درست کار می کنه و یه مواقعی هم برای اعدای که به عدد زوج ختم میشن درست کار میکنه. اما برای هر دو حالت درست کار نمی کنه. (7 سال پیش)
پاسخ به سوال 
Hadi  7 سال پیش
0 0

ممنون از زحمتت رضا جان . کد شما درسته اما ایردات double اذیت میکنه. مثلا

 2.03 + 0.01 

رو که باید بده 2.04، میده: 2.0399999999999996

0 0
کد اصلاح شد . با استرینک کار کنی حل میشه . (7 سال پیش)
پاسخ به سوال 
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 هست
0 0
کد بالا اصلاح شده . ببین اگه درست کار میکنه ، بهتره از اون استفاده بشه . (7 سال پیش)

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