Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Jak počítat se zápornými čísly v Javě?

V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Petr Věříš:15.2.2018 14:21

Jak počítat se zápornými čísly. Mám převod z K na °C a když zadám aby převedl 0K na °C tak mě napíše: 273,15. Ve skutečnosti to je -273,15. Nevíte jak tento problém vyřešit?

 
Odpovědět
15.2.2018 14:21
Avatar
B42P6
Člen
Avatar
B42P6:15.2.2018 14:31

Zdravím, "Java vie" počítať aj so zápornými číslami, chyba je niekde v tvojom kóde, niečo si iba nedomyslel :-P. Tipujem, že si niekde zamenil + a - .

Správne to je takto:
x Kelvinov je x - 273,15 °C.

Keď si aj tak nebudeš vedieť dať rady, post-ni sem kód kde premienaš K na °C

Nahoru Odpovědět
15.2.2018 14:31
'long long long' is too long for GCC
Avatar
Petr Věříš:15.2.2018 16:36

Teď mě to funguje, ale mám tu další problém: říká mi to, že -273.15°C je -546.30K. S Javou začínám, takže radši pošlu kód.

private void buttonVypocitejCFPressed(java.awt.event.MouseEvent evt) {
        String zceho = String.valueOf(comboboxZceho.getSelectedItem());
        double VysledekCCF = 0;
        double CCF = Double.parseDouble(textfieldC.getText());
        System.out.println("Button CF pressed.");

        switch (zceho)
        {
            case "°C -> °F":
                labelZCeho.setText("°C");
                labelNaCo.setText("°F");
                VysledekCCF = 1.8 * CCF + 32;
                VysledekCCF = Math.round(VysledekCCF*100)/100.0;
                break;
            case "°F -> °C":
                labelZCeho.setText("°F");
                labelNaCo.setText("°C");
                VysledekCCF = 0.5555555555555556 * (CCF - 32);
                VysledekCCF = Math.round(VysledekCCF*100)/100.0;
                break;
            case "°C -> K":
                labelZCeho.setText("°C");
                labelNaCo.setText("K");
                VysledekCCF = CCF - 273.15;
                VysledekCCF = Math.round(VysledekCCF*100)/100.0;
                break;
            case "K -> °C":
                labelZCeho.setText("K");
                labelNaCo.setText("°C");
                VysledekCCF = CCF + 273.15;
                VysledekCCF = Math.round(VysledekCCF*100)/100.0;
                if (VysledekCCF < 0);
                {
                    VysledekCCF = - VysledekCCF;
                }
                break;
            default:
                break;
        }

        labelCFVysledek.setText(String.format("%.2f%n", VysledekCCF));

    }

Doufám, že můj kód pochopíte. :-)

 
Nahoru Odpovědět
15.2.2018 16:36
Avatar
Martin Petrovaj
Tvůrce
Avatar
Odpovídá na Petr Věříš
Martin Petrovaj:15.2.2018 16:50

Nemali by tie znamienka byť obrátene? Pri prevode z °C na K CCF + 273.15 a z K na °C CCF 2 273.15

Skús si dosadiť napr. 0 ako si už skúšal, uvidíš, že tvoj kód pre 0 °C vráti výsledok -273.15 K, čo je hlúposť

Nahoru Odpovědět
15.2.2018 16:50
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Odpovídá na Petr Věříš
Matúš Olejník:15.2.2018 16:59

Nemusíš byť expert v Jave aby si ľahko zistil že v tvojom prípade program vykoná tretí case kde máš

VysledekCCF = CCF - 273.15;

a teda skutočne záporné číslo mínus záporné číslo ti dá výsledok ktorý si dostal :-) ako Martin už napísal znamienka by mali byť opačne

Nahoru Odpovědět
15.2.2018 16:59
/* I am not sure why this works but it fixes the problem */
Avatar
Petr Věříš:15.2.2018 17:06

No jo jsem pitomec. A nevíte jestli existuje nějaký příkaz na počítaní jaký potřebuji?

 
Nahoru Odpovědět
15.2.2018 17:06
Avatar
Odpovídá na Petr Věříš
Matúš Olejník:15.2.2018 17:11

Veď už si si ho napísal :-D či čo myslíš?

Nahoru Odpovědět
15.2.2018 17:11
/* I am not sure why this works but it fixes the problem */
Avatar
Martin Petrovaj
Tvůrce
Avatar
Martin Petrovaj:15.2.2018 17:12

Tak je to pomerne jednoduchý úkon, ku ktorému (podobne ako k väčšine fyzikálnych výpočtov) žiadne funkcie / metódy v štandardných knižniciach nenájdeš. :-)

Ak by si ale véééľmi chcel, tu k môjmu vlastnému podivu dal niekto ku konverzii teploty dokopy celú triedu: %P
https://courses.cs.washington.edu/…Advisor.java

Nahoru Odpovědět
15.2.2018 17:12
if (this.motto == "") { throw new NotImplementedException(); }
Avatar
Petr Věříš:15.2.2018 17:23

Díky už mi to fakčí. Stačilo po zobrazení výsledku vynulovat proměnné.

 
Nahoru Odpovědět
15.2.2018 17:23
Avatar
B42P6
Člen
Avatar
Odpovídá na Martin Petrovaj
B42P6:16.2.2018 17:39

:-P Viem, že ide o nejakú úlohu a nie o vedecký projekt. Ale toto sa mi páči:

Predicts tomorrow's temperature by randomly generating a value within
5 degrees C of the current temperature.

Nahoru Odpovědět
16.2.2018 17:39
'long long long' is too long for GCC
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.