"Interest" workshop

https://judge.telerikacademy.com/problem/00107interest
Здравейте,колеги ! Отдолу ще добавя моя код към задачата. Judje системата го одобрява с 3/5, но мисля,че забравям метода със закръглянето. Моля, някой да сподели къде и как трябва да го вмъкна. Благодаря Ви !

import java.util.Scanner;
public class Main {

public static void main(String[] args) {
    Scanner in=new Scanner(System.in);
    float deposit=in.nextFloat();
    float firstYear=deposit+(deposit*5)/100;
    float secondYear=firstYear+(firstYear*5)/100;
    float thirdYear=secondYear+(secondYear*5)/100;
    System.out.printf("%.2f",firstYear);
    System.out.println();
    System.out.printf("%.2f",secondYear);
    System.out.println();
    System.out.printf("%.2f",thirdYear);
}

}

Здравей,
Аз бих използвал double вместо float.
Прочети ако имаш време и възможност някоя статия на тема каква е разликата между double и float. И разгледай използването на for - loop , за тази задача .

Благодаря ти ! С double се получи. Глупава грешка, но поне ще го запомня сега. :slight_smile:
Хубава вечер !

2 Likes

Здравейте,

Ето го моят код. Но минава само с 4/5, като първия тест не минава. Може ли напътствия?

import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {

    Scanner input = new Scanner(System.in);
    DecimalFormat df = new DecimalFormat("#.00");

    System.out.print("");
    String deposit = input.nextLine();
    double result1 = Double.parseDouble(deposit);
    double interest = 0.05;

    double firstYear = (result1 * interest) + result1;
    double secondYear = (firstYear * interest) + firstYear;
    double thirdYear = (secondYear * interest) + secondYear;

    System.out.println(df.format(firstYear));
    System.out.println(df.format(secondYear));
    System.out.println(df.format(thirdYear));
    
}

}

Здравей, Христо,

Съгласно документацията на Oracle:

DecimalFormat provides rounding modes defined in RoundingMode for formatting. By default, it uses RoundingMode.HALF_EVEN .

При този метод на закръгляне, например 2.345 ще се закръгли, с точност до 2 цифри след десетичния разделител, до 2.34, вместо, както обикновено, до 2.35.

Отпечатването на дробни числа със System.out.printf("%.2f", ...) също използва обичайното закръгляне към по-голямото число.

За да се промени поведението на DecimalFormat по отношение на закръглянето, след декаларацията на df трябва да се добави реда

df.setRoundingMode(java.math.RoundingMode.HALF_UP);

Поздрави,
Иван

This is the way I solved it . The most difficult part for me was to figure out the formula… which is very basic. Though the good thing in the task is they give you the desired answers so you spend some time figuring it out, but it works and you learn along the way. Another thing that took me some time to figure out was the correct output.
You have to use float: eg. System.out.printf("%.2f%n, one); otherwise you won’t be able to apply the constraint to print the number with two numbers after the decimal point.
Please try it yourself, Do not just copy and paste, because it is not as useful for your personal knowledge.
Good luck.
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
        Scanner user_input = new Scanner(System.in);
        String line = user_input.nextLine();

        double n = Integer.parseInt(line);
        double one = n + (n*0.05);
        double two = one + (one*0.05);
        double three;
        three = two + (two * 0.05);

        System.out.printf("%.2f%n",one);
        System.out.printf("%.2f%n",two);
        System.out.printf("%.2f%n",three);



}

}