2013-03-20 12 views
11

Czy w przypadku kodowania twardego numeru w moim kodzie za pomocą notacji naukowej (np. 1e9), jaki będzie typ tej liczby (int, long, float, double ..)?Czy notacja naukowa jest interpretowana jako int lub float?

Kiedy significand lub wykładnik są liczbami zmiennoprzecinkowymi, oczywiście nie może to być liczba całkowita, ale co w powyższym przypadku?

Odpowiedz

11

Parametr e tworzy literał zmiennoprzecinkowy. Z JLS (§3.10.2. Floating-Point Literals):

Ruchomy punkt dosłowny jest typu float jeśli jest sufiksem z literą ASCII F lub f; w przeciwnym razie jego typ to double i opcjonalnie może być dodany z literą ASCII D lub d (§ 4.2.3).

Dlatego 1e9 typu double, jak 1e9d. Z drugiej strony, 1e9f jest typu float.

4

Zazwyczaj będą to: typ podwójny. Jeśli umieścisz za nim f (z F), jest to wartość zmiennoprzecinkowa.

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

To będzie "podwójne", chyba że użyjesz "f" lub "F", wtedy będzie to literówka.

0

Lepiej używać Double. Ponieważ ma dziesiętny zmiennoprzecinkowy, jest to komputerowy system arytmetyczny ściśle powiązany z notacją naukową. na przykład: 0.000 000 007 51 w notacji naukowej wynosi 7,51 × 10-9. gdy użyjesz go jako int, 7,51 będzie 7, podczas gdy użyjesz int będzie 7.51.

Powiązane problemy