Cześć,
W sobotę wieczorem pomyślałem, że fajne by było nauczyć się programować. No i zacząłem. Uczę się powoli Javy. Piszę w eclipsie, to raczej nieistotne. (Chyba, że polecicie inny, lepszy).
Napisałem pierwszy program do równań kwadratowych. Wszystko działa bardzo fajnie, ale używam zmiennych double, co sprawia, że przy wyniku wyskakują mi często liczby 3.103204032432 albo choćby 1.0. Zrobiłem coś, co internety nazywają rzutowaniem i teraz program ucina mi te wartości po przecinku do liczb całkowitych.
I teraz pytania:
-
Czy jest możliwe, żeby wstawić warunek, że jeśli wynik wyjdzie nieokresowy, z jakimś tam nieskończonym rozwinięciem dziesiętnym, to żeby na koniec w println wywalało mi wynik zaokrąglony do dwóch miejsc po przecinku, a jeśli wyjdzie liczba całkowita albo chociaż wymierna, to żeby nie zaokrąglał w ogóle?
-
Jeśli to powyższe się nie uda, to może mi ktoś powiedzieć jak zaokrąglić wyniki do części setnych w tym kodzie poniżej?
import java.util.Scanner;
public class RownanieKwadratowe
{
public static void main(String[] args)
{
System.out.println("Podaj parametry równania kwadratowego");
Scanner skaner = new Scanner(System.in);
double a = skaner.nextDouble();
double b = skaner.nextDouble();
double c = skaner.nextDouble();
double delta = b*b-4*a*c;
if (delta>0)
{
delta = Math.sqrt(delta);
double x1 = (-b-delta)/(2*a);
double x2 = (-b+delta)/(2*a);
int x3 = (int)(x1);
int x4 = (int)(x2);
System.out.println("Pierwiastki równania to: "+x3+" oraz "+x4);
}
else if (delta==0)
{
double x5 = (-b/2*a);
int x6 = (int)(x5);
System.out.println("Pierwiastkiem równania jest "+x6);
}
else if (delta<0)
System.out.println("Równanie nie ma rozwiązań");
}
}