Float trong Java là gì?


102

Tôi đã viết mã này:

float b = 3.6;

và tôi nhận được điều này:

Lỗi: Sự cố biên dịch chưa được giải quyết: 
    Loại không khớp: không thể chuyển đổi từ kép sang float

Tại sao? Định nghĩa của là floatgì?



1
@Sneftel Đó không phải là bản sao của câu hỏi này. Câu hỏi này hỏi tại sao nó không biên dịch (mà câu trả lời là 'bạn phải thêm a fvào nghĩa đen'), trong khi câu hỏi khác hỏi tại sao bạn phải thêm dấu f. Mặc dù chúng có liên quan với nhau, nhưng nó không phải là một bản sao.
Mark Rotteveel

Xem meta.stackexchange.com/questions/217401/… . Các câu trả lời cho câu hỏi được liên kết là câu trả lời cho câu hỏi này.
Sneftel

Câu trả lời:


180

Trong Java, khi bạn nhập một số thập phân 3.6, nó được hiểu là a double. doublelà dấu phẩy động IEEE 754 chính xác 64 bit, trong khi floatlà dấu chấm động IEEE 754 chính xác 32 bit. Vì a floatít chính xác hơn a doublenên không thể thực hiện chuyển đổi một cách ngầm định.

Nếu bạn muốn tạo một float, bạn nên kết thúc số của mình bằng f(ví dụ 3.6f:).

Để biết thêm giải thích, hãy xem định nghĩa kiểu dữ liệu nguyên thủy của hướng dẫn Java .


40

Làm cho nó

float b= 3.6f;

Một ký tự dấu phẩy động thuộc loại float nếu nó được kết thúc bằng ký tự ASCII F hoặc f; nếu không thì kiểu của nó là kép và nó có thể được thêm vào một chữ cái ASCII D hoặc d tùy ý


Có cách nào để kiểm tra xem một chuỗi chỉ có giá trị float không?
MasterJoe

13

Vấn đề là số thập phân được mặc định là gấp đôi. Và vì double không phù hợp với float nên bạn phải nói rõ ràng rằng bạn cố ý định nghĩa float. Vì vậy, hãy đi với:

float b = 3.6f;

8

Trong JAVA, các giá trị như:

  1. 8.5
  2. 3,9
  3. (và như thế..)

Được giả định là double và không float .

Bạn cũng có thể thực hiện cast để giải quyết vấn đề:

float b = (float) 3.5;

Giải pháp khác:

float b = 3.5f;

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.