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
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.
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.
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.