Là một tín đồ của John Carmack, tôi đã được đọc công khai có sẵn Mã hóa ước tài liệu Id Tech (tại ftp://ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.doc nếu bạn quan tâm), và đã xem qua một quy ước tôi không hoàn toàn hiểu:Sự khác biệt giữa "1.0f" và "1.f" là gì?
Sử dụng chính xác đặc điểm kỹ thuật cho các giá trị dấu phẩy động trừ khi có nhu cầu rõ ràng cho một đôi.
float f = 0.5f
Thay vì
float f = 0.5;
Và
float f = 1.0f;
Thay vì
float f = 1.f;
Khác nhau như thế nào?
Tôi có thể hiểu sự khác biệt giữa hai trong ví dụ đầu tiên (sau đó thực hiện chuyển đổi kép thành nổi), mặc dù tôi nghi ngờ nó chỉ cần một trình biên dịch không ngu ngốc để bắt và sản xuất cùng bytecode, không có chênh lệch thời gian chạy.
Nhưng có trường hợp nào khi thêm dấu 0 vào khai báo giá trị dấu phẩy động của bạn thay đổi mọi thứ không?
Cảm giác giống như lỗi đánh máy trong ngữ cảnh, vì cả hai đều có thông số chính xác. 1.0f vẫn dễ đọc hơn. –
Tác giả có thể đề xuất 'float f = 1.0f;' thay vì 'float f = 1.0;'; sự hiện diện hay vắng mặt của hậu tố 'f' là điểm. (Và tốt hơn là sử dụng 'double' thay vì' float'.) –
Trình biên dịch tốt nên cảnh báo nếu bạn khởi tạo 'float' với hằng số' double' có giá trị thay đổi khi được chuyển thành 'float', nhưng không nên , như một quy tắc, tạo ra cùng một mã như thể hằng số đã được gắn liền với 'f'. Điều này là do có một số chữ số khác nhau khi lần đầu tiên được chuyển đổi thành 'double' và sau đó thành' float' so với khi được chuyển đổi trực tiếp thành 'float'. Nó sẽ là bất thường cho một lập trình viên để sử dụng những cố ý, nhưng nó là một sử dụng hợp pháp của ngôn ngữ và cần được biên soạn như đã nêu. –