Зеленчукова борса
Задачка на Java.
Градинар продавал реколтата от градината си на зеленчуковата борса. Продава зеленчуци за N лева на килограм и плодове за M лева за килограм. Напишете програма, която да пресмята приходите от реколтата в евро ( ако приемем, че едно евро е равно на 1.94лв).
Ограничения: Всички числа ще са в интервала от 0.00 до 1000.00
Привет. Срещам проблем с ограничаване на въвежданите стойности в интервала 0.00 до 1000.00 . Не ми е много ясно как до го направя. Сигурно е нещо простичко но за начинаещ всичко е сложно ;)
Ето моето решение: (В джъджа изкарва 90 от 100 именно защото гърми при вход на число по голямо от 1000)
import java.util.Scanner;
public class zelenchuci {
public static void main(String[] args) {
Scanner console = new Scanner(System.in);
double vegInLv = Double.parseDouble(console.nextLine());
double fruitsInLev = Double.parseDouble(console.nextLine());
int vegKg = Integer.parseInt(console.nextLine());
int fruitKg = Integer.parseInt(console.nextLine());
System.out.println((vegInLv * vegKg + fruitKg * fruitsInLev) / 1.94);
}
}
Здравей.
Немисля че е добра идея да запазваш резултата в double и после просто да го преместваш в BigDecimal.. или го запазваш директно в BigDecimal и принтираш или просто принтираш цялото нещо защото така се губи точност..
Хей благодаря това изкара 100 от 100! Но съвсем не знам защо се използва това BigDecimal и какъв изобщо е бил проблемът.
Съгласна съм че точността се губи, но проблема според мен идва от това, че числото е твърде голямо. Нека някой по компетентен да обясни. В случая имаме цена и би трябвало да се използва направо decimal. Но как става това в Java, не знам.
Взимам си думите назад .. явно :)
но така също работи което ме навежда на мисълта че просто принтиращата функция има някаква особеност..(не разбирам java)
Edit:ами проблема е следния ..
и 2те връщат еднакъв резултат но 1вото ще го върне като
2.8421709430404007E-14 - като E-14 ше рече на степен 14-та
второто ше го върне като
2.842170943040400700000000000000
и съответно едното немачва правилно в джъджа..
Ето го и работещо без BigDecimal.. оказах се прав за това че метода на праинтирване го мачка до число на степен :)
Благодаря за помоща! Сега разбрах какъв е бил проблема.