Numeri
Java ha otto tipi primitivi (i tipi servono a dichiarare le variabili). I tipi primitivi (o tipi semplici) NON sono oggetti. Gli otto tipi semplici sono: byte, short, int, long, float, double, char, boolean. I primi sei rappresentano numeri; char rapprensenta un caratere Unicode e boolean, un valore logico: true o false.
Interi:
I tipi byte, short, int, long rappresentano numeri interi, la differenza tra tipi successivi è dovuta alla rispettiva capacità.
byte raprresenta un intero tra -128 e 127 (sono 256 interi, cioè quello che si può rappresentare con 8 bits)
short: corrisponde a interi con 16 bits; rappresenta un intero tra -32.768 e 32.767.
int : intero con 32 bits; rappresenta un intero tra -2.147.483.648 e 2.147.483.647.
long: 64 bits; rappresenta un intero tra -9.223.372.036.854.775.808 e 9.223.372.036.854.775.807
Non c'è bisogno di ricordarsi tutti questi numeri. In generale il formato int è quello più conveniente per trattare questioni riguardanti numeri interi.
Reali:
float : rappresenta un numero reale di valore massimo più o meno 1038. Un float ha 7 decimali significative. Per dichiarare un float bisogna appendere il suffisso F o f; per esempio "1,5F" è 1,5 considerato come float.
double : rappresenta un numero reale di vlore massimo, circa, 10308 e ha 15 decimali significative.
E' preferibile usare double se si vogliono usare numeri reali non interi.
Ecco come modificare l'applet precedente per tenere conto dell'arrotondamento:
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import java.lang.Math.*;
public class Iva2 extends Applet implements ActionListener {
Button tasto = new Button("premi!");
Font textFont = new Font("Dialog", Font.BOLD, 20);
String Str = new String("");
String Ris = new String("");
TextField yourText = new TextField(Str, 15);
int x=0;
int y=0;
public void init() {
add(tasto);
tasto.addActionListener(this);
add(yourText);
}
public void actionPerformed(ActionEvent e) {
Str = yourText.getText();
x = Integer.parseInt(Str);
double z = x;
y = (int)(Math.round(z + z/5));
Ris = Integer.toString(y);
repaint();
}
public void paint (Graphics g) {
g.setFont(textFont);
g.setColor(Color.red);
g.drawString("Il prezzo con IVA è:" + Ris, 20, 50);
}
}
con double z = x; definiamo x come double (questo è legale perchè x è un int, non sarebbe legale fare int z = x; con x un double (non tutti i double sono int)). Applichiamo Math.round() a z + z/5, Math.round() arrotonda all'intero più vicino (considerato come double), siccome y è un int, bisogna fare un cast esplicito: (int)(Math.round(z+z/5));