char c1 = 123; //Compiles fine
char c2 = 123456; //Error: cannot convert from int to char
Java là đủ thông minh để xác định xem một số nguyên là đủ nhỏ để được chuyển đổi sang một nhân vật. Tại sao nó không thể chuyển đổi các chữ số dấu chấm động rất nhỏ thành một float ?. Ví dụ:char c = một số chữ số nguyên có thể biên dịch nhưng float f = một số dấu chấm động sẽ không bao giờ biên dịch. Tại sao?
float f1 = 0.3; //Error: cannot convert from double to float
float f2 = 0.3f; //Compiles fine
char c = một số nguyên theo nghĩa đen có thể biên dịch nhưng nổi f = một số điểm nổi đen sẽ không bao giờ biên dịch. Tại sao?
PS: Tôi biết rằng một dấu chấm đen được coi là một đôi theo mặc định
thể trùng lặp của [Java: Tại sao bạn cần phải xác định một 'f" trong một phao đen] (http://stackoverflow.com/questions/14102955/java-why-do-you-need- to-specify-af-in-a-float-literal) – RealSkeptic
Câu hỏi của tôi không phải là về 'f' trong các chữ số dấu chấm động. Đó là về cách một kiểu dữ liệu lớn hơn được chuyển đổi thành một kiểu dữ liệu nhỏ hơn mà không có bất kỳ vấn đề nào trong một trường hợp (int đến char, 32 bit đến 16 bit) trong khi nó đưa ra một lỗi biên dịch trong trường hợp khác (double to float, 64 bit đến 32 bit) .Tiếng đủ nhỏ để vừa với biến float giống như int là nhỏ @ RealSkeptic –
Câu trả lời vẫn nằm trong câu hỏi đó - tuy nhiên, câu trả lời hay nhất không phải là câu trả lời được chấp nhận – RealSkeptic