Java Language Il galleggiante primitivo


Esempio

Un float è un numero a virgola mobile IEEE 754 a 32 bit a precisione singola. Per impostazione predefinita, i decimali vengono interpretati come doppi. Per creare un float , è sufficiente aggiungere un f al letterale decimale.

double doubleExample = 0.5;      // without 'f' after digits = double
float floatExample = 0.5f;       // with 'f' after digits    = float

float myFloat = 92.7f;           // this is a float...
float positiveFloat = 89.3f;     // it can be positive,
float negativeFloat = -89.3f;    // or negative
float integerFloat = 43.0f;      // it can be a whole number (not an int)
float underZeroFloat = 0.0549f;  // it can be a fractional value less than 0

I float gestiscono le cinque operazioni aritmetiche comuni: addizione, sottrazione, moltiplicazione, divisione e modulo.

Nota: quanto segue può variare leggermente a causa di errori in virgola mobile. Alcuni risultati sono stati arrotondati per chiarezza e leggibilità (il risultato stampato dell'esempio di addizione era in realtà 34.600002).

// addition
float result = 37.2f + -2.6f;  // result: 34.6

// subtraction
float result = 45.1f - 10.3f;    // result: 34.8

// multiplication
float result = 26.3f * 1.7f;   // result: 44.71

// division
float result = 37.1f / 4.8f;   // result: 7.729166

// modulus
float result = 37.1f % 4.8f;   // result: 3.4999971

A causa del modo in cui i numeri in virgola mobile vengono memorizzati (ad esempio in formato binario), molti numeri non hanno una rappresentazione esatta.

float notExact = 3.1415926f;
System.out.println(notExact); // 3.1415925

Sebbene l'uso di float bene per la maggior parte delle applicazioni, non è necessario utilizzare né floatdouble per memorizzare rappresentazioni esatte di numeri decimali (come importi monetari) o numeri in cui è richiesta una maggiore precisione. Invece, dovrebbe essere usata la classe BigDecimal .

Il valore predefinito di un float è 0.0f .

float defaultFloat;    // defaultFloat == 0.0f

Un float è preciso a circa un errore di 1 su 10 milioni.

Nota: Float.POSITIVE_INFINITY , Float.NEGATIVE_INFINITY , Float.NaN sono float valori. NaN sta per risultati di operazioni che non possono essere determinate, come la divisione di 2 valori infiniti. Inoltre 0f e -0f sono diversi, ma == si -0f vero:

float f1 = 0f;
float f2 = -0f;
System.out.println(f1 == f2); // true
System.out.println(1f / f1); // Infinity
System.out.println(1f / f2); // -Infinity
System.out.println(Float.POSITIVE_INFINITY / Float.POSITIVE_INFINITY); // NaN