Post

Visualizzazione dei post con l'etichetta Range di valori rappresentabili

Rappresentare numeri grandissimi

DOMANDA: E' possibile rappresentare in Java dei numeri grandissimi che hanno un valore oltre quello consentito dai tipi di dati primitivi long e int? RISPOSTA: Come abbiamo visto nel post sul range di valori rappresentabili con i diversi tipi di dati primitivi, effettuare un'operazione il cui risultato vada oltre tale limite comporta un errore di calcolo con conseguenze potenzialmente disastrose. La soluzione a tali limitazioni esiste: la prima, più complessa, rientra nell'analisi numerica e in algoritmi di troncamento, arrotondamento e bit shifting, ma non è scopo di questo post. La seconda invece è messa a disposizione da Java con le classi java.math.BigInteger e java.math.BigDecimal (rispettivamente per i numeri interi e decimali). Guardiamo con un esempio come funzionano: package bignumbers; import java.math.BigInteger; public class BigNumbers { public static void main(String[] args) { // rappresentazione errata oltre i limiti ...

Tipi primitivi: range di rappresentazione

DOMANDA: Quali sono i range di valori rappresentabili dai tipi di dati primitivi Java? RISPOSTA: Benché non siano facilissimi da ricordare, è importante sapere i limiti di rappresentazione dei diversi tipi per prevenire o evitare di trovarsi a fronteggiare errori di calcolo difficilmente individuabili. Ecco una tabella riepilogativa dei diversi range : BYTE (8 bit) :             da     -128     a     127   SHORT (16 bit) :           da     -32.768     a     32.767 INT (32 bit) :             da     -2.147.483.648     a     2.147.483.647 LONG (64 bit) :            da     -9.223.372.036.854.774.808     a     9.223.372.036.854.774.807 FLOAT (32 bit) :           da    1,4e -045      a...