2011-12-22 40 views
31

Trong java.lang.Double, có tờ khai liên tục sau:P trong việc kê khai thường xuyên

public static final double MAX_VALUE = 0x1.fffffffffffffP+1023; 
public static final double MIN_NORMAL = 0x1.0p-1022; 

các P là gì? Sự khác biệt trong trường hợp có quan trọng không?

Tôi nhận thức được L, DF sử dụng cho Long s, Double s và Float s, nhưng chưa bao giờ thấy một P trước.

+0

Một phao thập lục phân, có lẽ? –

+0

"p" cho "power" (?) Dưới dạng "e" có thể bị hiểu lầm dưới dạng ký hiệu thập lục phân (?) – moala

Trả lời

25

P (hoặc p) cho biết một hệ thập lục phân floating-point literal, trong đó significand được chỉ định bằng hex.

p được sử dụng thay vì e. Các hậu tố df mà bạn đã thấy là trực giao với điều này: cả hai 0x1.0p+2f và là các chữ hợp lệ (một là loại float và loại kia là loại double).

Thoạt nhìn có vẻ tiền tố 0x là đủ để nhận dạng dấu phẩy động hex, vậy tại sao các nhà thiết kế Java chọn thay đổi chữ cái từ e thành p? Điều này phải làm với e là một chữ số hex hợp lệ, do đó việc giữ nó sẽ dẫn đến phân tích sự mơ hồ. Xem xét:

0x1e+2 

Là một hex double hoặc tổng của hai số nguyên, 0x1e2? Khi chúng ta thay đổi e-p, sự nhập nhằng được giải quyết:

0x1p+2 
5

Cú pháp p nếu được sử dụng để xác định một đôi chữ trong hex. Điều này rất hữu ích khi bạn muốn xác định biểu diễn chính xác của nó nhưng không hữu ích trong mã chung vì bạn muốn giá trị kép là một giá trị thập phân thay vì một số mẫu hình lục giác.

2

Nó được sử dụng để biểu thị một chữ số thập lục phân dấu chấm động.

Một dấu chấm đen có các phần sau đây: a toàn bộ số phần, một số thập phân hoặc thập lục phân điểm (đại diện bởi một giai đoạn ASCII ký tự), một phần phân đoạn, một số mũ, và một loại hậu tố. Số số dấu phẩy động có thể được viết dưới dạng giá trị thập phân hoặc dưới dạng giá trị thập lục phân . Đối với các chữ số thập phân, số mũ, nếu có, là được biểu thị bằng chữ cái ASCII e hoặc E, theo sau là một số nguyên có dấu tùy chọn . Đối với các chữ thập lục phân, số mũ luôn được yêu cầu và được biểu thị bằng chữ cái ASCII p hoặc P theo sau là số nguyên có dấu tùy chọn .

Từ http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#230798

3

Đó là một hệ thập lục phân dấu chấm động theo nghĩa đen, và cú pháp là: ký * 0x * significand * p * mũ. Xem phần này blog để được giải thích.

Các vấn đề liên quan