2013-03-20 52 views
11

Nếu tôi mã hóa một số trong mã của mình bằng ký pháp khoa học (ví dụ: 1e9) thì loại số đó sẽ là gì (int, long, float, double ..)?Ký pháp khoa học có được hiểu là int hay float không?

Khi significand hoặc số mũ là số dấu phẩy động, nó không thể là số nguyên rõ ràng, nhưng trong trường hợp trên thì sao?

Trả lời

11

e biến nó thành dấu phẩy động. Từ JLS (§3.10.2. Floating-Point Literals):

Một dấu chấm đen là loại float nếu nó được hậu tố với một lá thư ASCII F hoặc f; nếu không, loại của nó là double và nó có thể tùy chọn được gắn liền với một chữ cái ASCII D hoặc d (§4.2.3).

Vì vậy, 1e9 loại double, như là 1e9d. Mặt khác, 1e9f thuộc loại float.

4

Đây thường là loại đôi. Nếu bạn đặt f (của F) đằng sau nó, đó là một phao.

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

Nó sẽ là 'gấp đôi' trừ khi bạn sử dụng 'f' hoặc 'F' thì nó sẽ là chữ nổi.

0

Tốt hơn nên sử dụng Double. Bởi vì nó có dấu phảy động thập phân là một hệ thống số học máy tính liên quan chặt chẽ với ký pháp khoa học. ví dụ: 0.000 000 007 51 trong ký hiệu khoa học là 7,51 × 10-9. khi bạn sử dụng nó như int, 7,51 sẽ là 7 trong khi khi bạn sử dụng int nó sẽ là 7,51.