"Interest" workshop

preparation

#1

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);
}

}


#2

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


#3

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


#4

Здравейте,

Ето го моят код. Но минава само с 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));
    
}

}


#5

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

Съгласно документацията на 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);

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