Bạn không nên sử dụng float trừ khi bạn phải làm như vậy. Trong 99% trường hợp, gấp đôi là lựa chọn tốt hơn.
int x = 1111111111;
int y = 10000;
float f = (float) x / y;
double d = (double) x / y;
System.out.println("f= "+f);
System.out.println("d= "+d);
bản in
f= 111111.12
d= 111111.1111
Theo bình luận của @ Matt.
float có độ chính xác rất nhỏ (6-7 chữ số) và hiển thị lỗi làm tròn đáng kể khá dễ dàng. double có độ chính xác 9 chữ số khác. Chi phí sử dụng double thay vì float là không đáng kể trong 99% trường hợp, tuy nhiên chi phí của một lỗi nhỏ do lỗi làm tròn cao hơn nhiều. Vì lý do này, nhiều nhà phát triển khuyên bạn không nên sử dụng dấu phẩy động và đặc biệt khuyên dùng BigDecimal.
Tuy nhiên, tôi thấy rằng double có thể được sử dụng trong hầu hết các trường hợp với điều kiện sử dụng cách làm tròn hợp lý .
Trong trường hợp này, int x có độ chính xác 32 bit trong khi float có độ chính xác 24 bit, ngay cả khi chia cho 1 cũng có thể có lỗi làm tròn. mặt khác, double có độ chính xác 53 bit là quá đủ để có được kết quả chính xác hợp lý.