Loading...
ivanantonov avatar ivanantonov 0 Точки

От къде се получава разлика в крайния резултат

Здравейте,

 

Решвам задача fish tank от първото упражнение на Java Basics

При задаване на входни данни 85,75,47,17, както е в задачата се получава разминаване.

Първото решение е с преобразуване от см3 в литри, като  умножавам по 0.001 - 248.68875

https://pastebin.com/RtGa3pxs

Второто решение е с преобразуване от см3 в литри, като раздела на 1000 - 248.17

https://pastebin.com/jAzRAkeg

Двете сметки би трябвало да са равни, но ми дава разлика в крайния резултат.

 

Може ли да ми пищете откъде идва разликата.

 

Благодаря предварително,

Тагове:
0
Programming Basics
Deyan2306 avatar Deyan2306 26 Точки

Предполагам това се случва, защото единият път ти делиш цяло число (int) на друго цяло число (1000) и го запазваш в променлива double. В другия случай умножаваш цяло число с тип double. Не съм напълно сигурен в това което говоря, така че имай 1 на ум. Може да е bunch of nonsence. Но така като гледам това е единственият логически отговор, който мога да ти там. Другото е до огромна степен еднакво. Надявам се това да отговаря на въпроса ти до известна степен.

 

Ето едно примерно решение на задачата в случай, че не се справяш :) Дава 100/100 в Judge

import java.util.Scanner;

public class FishTank {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int lenght = Integer.parseInt(scanner.nextLine());
        int width = Integer.parseInt(scanner.nextLine());
        int height = Integer.parseInt(scanner.nextLine());
        double percent = Double.parseDouble(scanner.nextLine());

        double fishTankV = lenght * width * height;
        double litters = fishTankV * 0.001;
        double tknPlace = percent / 100;
        double needed = litters * (1 - tknPlace);

        System.out.println(needed);
    }
}

Препоръката ми е за това ниво да изкарваш всичко в променлива, така много по-ясно и четливо ще намираш къде какво се случва. 

1
14/09/2022 22:54:31
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.