2013-03-20 16 views
11

Se inserisco un codice nel mio codice utilizzando la notazione scientifica (ad esempio 1e9) quale sarà il tipo di tale numero (int, long, float, double ..)?La notazione scientifica è interpretata come int o float?

Quando il significante o l'esponente sono numeri in virgola mobile, ovviamente non può essere un numero intero, ma cosa succede nel caso precedente?

risposta

11

Il e lo rende letterale a virgola mobile. Dalla JLS (§3.10.2. Floating-Point Literals):

A-virgola mobile letterale è di tipo float se suffisso una lettera ASCII F o f; altrimenti il ​​suo tipo è double e può facoltativamente essere suffisso con una lettera ASCII D o d (§4.2.3).

Pertanto, 1e9 di tipo double, come è 1e9d. D'altra parte, 1e9f è di tipo float.

4

Questi di solito sono di tipo doppio. Se si mette uno f (di F) dietro di esso, è un float.

double d = 1e9; 
float f = 1e9f; 
3

Sarà 'double' a meno che non si usi 'f' o 'F', quindi sarà letterale float.

0

È meglio utilizzare il doppio. Poiché un decimale in virgola mobile è un sistema aritmetico computerizzato strettamente correlato alla notazione scientifica. ad esempio: 0.000.000 007 51 in notazione scientifica è 7,51 × 10-9. quando lo usi come int, 7.51 sarebbe 7 mentre quando usi int sarà 7.51.

Problemi correlati