Zaokrouhlení čísel – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Zaokrouhlení čísel – Java – Fórum – Programujte.comZaokrouhlení čísel – Java – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
pauli9750
Duch
11. 6. 2010   #1
-
0
-

Dobrý den,
ve svém menším programu jsem narazil na menší problém - dělám program na výpočet BMI a Bazálního metabolismu a zajímalo by mě, jak mám zaokrouhlit číslo třeba na dvě desetiny. Datový typ je double, takže je tam těch desetinných míst hrozně moc!

    

public class Okno extends JFrame {
int sirka, vyska;
String konto;
private JLabel lab, lab1, lab2, lab3, lab4, lab5, vysledek;
double zvaha, zvyska, zvek, BM, BMI;
private JRadioButton zena, muz;
private JTextField vaha, vyska1, vek;
private JButton vypocitej;
private Container obsah;

.
.
.
public void BM(ActionEvent e){
BM=66.473+(13.7516*this.zvaha)+(5.0033*this.zvyska)-(6.755*this.zvek);
BMI=zvaha/((this.zvyska/100)*(this.zvyska/100));
if(BMI<=19){
konto="nízká. Pokuste se Vaši váhu zvýšit, jinak Vám hrozí zdravotní rizika!";
}
if(BMI>=19 || BMI<22){
konto="normální. Nicméně nemáte daleko od podvýživy...";
}
if (BMI<=22 || BMI>=24) {
konto="naprosto ideální! Vaši váhu si udržujte!";
}
if (BMI>=24 || BMI<25) {
konto="normální. Nicméně nemáte daleko od obézity!";
}
if (BMI>=25){
konto="vysoká! Pokuste se Vaši váhu snížit, jinak Vám hrozí zdravotní rizika!";
}
showMessageDialog(this, " Váš bazální metabolismus je "+BM+". Znamená to, že byste za den měli příjmout "+BM+" Kcal.\nHodnota vašeho BMI je "+BMI+", což je "+konto, "Výsledek", INFORMATION_MESSAGE);
}
}


A další menší dotaz - jak mám v GUI nastavit výjimky? Chtěl bych zamezit případných chybám při zadávání, ale nevím, kam přesně příkaz try vložit... Že by takhle?


public void zadanaVyska(FocusEvent e){
try{
this.zvyska=Integer.parseInt(vyska1.getText());
}
catch(ArithmeticException e){
showMessageDialog(this, " Špatně zadané číslo", "Výstraha", INFORMATION_MESSAGE);
}
}



Předem děkuji za odpověďi

Nahlásit jako SPAM
IP: 89.102.26.–
Reklama
Reklama
liborb
~ Redaktor
+18
Guru
11. 6. 2010   #2
-
0
-

Zkus třídu NumberFormat a výjimkou musíš ošetřit případ, kdy se vstup od uživatele zpracováváš. To, co si napsal, vypadá dobře.

Nahlásit jako SPAM
IP: 195.189.143.–
cerf
~ Anonymní uživatel
4 příspěvky
11. 6. 2010   #3
-
0
-

K tomu zaokrouhlování, co třeba:

1. přičíst k výsledku 0.005 (zaokrouhlení)
2. vynásobit 100.0
3. přetyopovat na int (ořezání desetinné části)
4. jako double vydělit 100.0

jinak řečeno...

12.2568 + 0.005 = 12.2618
12.2618 * 100.0 = 1226.18
(int) = 1226
(doble)1226 / 100.0 = 12.26

(JAVU téměř neznám, tak snad to není úplně mimo)

Nahlásit jako SPAM
IP: 188.246.100.–
pauli9750
Duch
11. 6. 2010   #4
-
0
-

Moc Vám děkuji za Vaše rady, desetiny i výjimky fungují! Jsem Vám zavázán.
Ještě bych měl takový drzý dotaz - šel by řetězec String obarvit nebo mu přiřadit font? U JLabelu to funguje, ale potřeboval bych jej použít i na String. Mám zdroják blbě nebo je toto nemožné? :smile1:

Nahlásit jako SPAM
IP: 83.240.80.–
liborb
~ Redaktor
+18
Guru
12. 6. 2010   #5
-
0
-

String je datový typ. Změna barvy, fontu, ... lze udělat pouze při jeho výpisu do nějakého GUI ovládacího prvku (třeba Label), nebo-li je to vlastnost toho ovládacího prvku. Samotný datový typ neobarvíš.

Nahlásit jako SPAM
IP: 195.189.143.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 36 hostů

Podobná vlákna

Zaokrouhlení — založil Standa

Zaokrouhlení double — založil vollf82

Zaokrouhlení na stovky — založil FeXxy

Zaokrouhlení na desitky — založil Boblig

Zaokrouhlení double — založil Redby

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý