3 svar
394 visningar
nutella143 är nöjd med hjälpen
nutella143 74 – Fd. Medlem
Postad: 7 mar 2018 10:53

förstår inte läxan.

har en uppgift:

 

Skriv ett program där koden som anges nedan används för att beräkna
och skriva ut två värden:


(i) System.out.println (100 * 1000 * 10000 * 100000);
(ii) System.out.println (100 * 1000 * 10000 * 100000.0);

är resultaten som skrivs ut korrekta? Försök att hitta en förklaring. Obs: Du får inte ändra koden - kopiera den som den är!

 

skrev programmet:

import javax.swing.*;

public class Uppgift3_1b {

public static void main (String[] args) {

byte a = 100;
short b = 1000;
short c = 10000;
int d = 100000;
double e = 100000.0;

System.out.println (100 * 1000 * 10000 * 100000);
System.out.println (100 * 1000 * 10000 * 100000.0);

}
}

det som skrivs ut i kommandotolken är:

276447232
1.0E14

borde inte svaren bli desamma... jag serinte vart jag gör fel.. eller där det blir annorlunda :S

PeBo 540
Postad: 7 mar 2018 11:37

Den första skriver ut heltal (troligast 32-bitars heltal), medan den andra skriver ut ett flyttal. Det som är fel är den första utskriften eftersom talet är för stort för att hållas i ett heltal, och jag tror resultatet kan bli vilket skräp som helst. Kolla lite på integer overflow på wikipedia.

PeterÅ 842
Postad: 7 mar 2018 16:55

Du gör inget fel. Du förväntas svara varför de båda utskrivna talen blir olika. Läs mer i länken PeBo gav dig.

nutella143 74 – Fd. Medlem
Postad: 8 mar 2018 10:59

jag förstår, tack så mycket för hjälpen ska läsa på länken.

så egentligen behöver man inte ha med:

byte a = 100;
short b = 1000;
short c = 10000;
int d = 100000;
double e = 100000.0;

i koden då det blir samma utskrift oavsett om det är med eller inte.

Svara Avbryt
Close