Hj'! Đây là vấn đề đơn giản của dân lập trình nếu chịu khó để ý tí xíu thôi. Không thik lôi thôi nữa, các bạn chú ý 2 phần sau:
1.
Chuyển kiểu dữ liệu: - Code:
-
double d;
int c = 12345678;
d = c;
Chuyện này quá bình thường và được gọi là chuyển kiểu ngầm định, nghĩa là d sẽ mang giá trị của c và vẫn là double,dễ hiểu nhất là như vậy, chứ còn nguyên lý thì mình ko thik đi sâu. Nhưng:
- Code:
-
int a;
double b = 30000000;
a = b;
Sẽ là ko hợp lệ nếu bạn làm như vậy. Do int có kích thước nhỏ hơn double, nên Compiler ko co phép làm chuyện này, và để làm được chuyện này thì cần phải:
- Code:
-
int a;
double b = 30000000;
a = (int)b;
OK, nghĩa là bạn phải làm 1 cách tường minhh, a bây giờ mang giá trị 30000000, Nhưng:
- Code:
-
int a;
double b = 300000000;
a = (int)b;
Sẽ ko OK, và sẽ bị vấn đề Overflow, vấn đề này rất thường gặp trong C++, do kiểu int trong đó quá nhỏ. Nhưng trong Java thì tạm yên tâm được.
Túm lại 1 câu về vấn đề 1: Nếu bạn chuyển 1 KDL từ cao xuống thấp thì OK, ko vấn đề gì, và sẽ được COmpiler hỗ trợ 1 cách ngầm định, còn từ thâp lên cao thì bạn phải làm 1 cách tường minh, tuy nhiên, cần chú ý đến vấn đề Overflow.
2.
Vấn đề phép chia 2 số.
Tất nhiên ai trong chúng ta khi chọn biến để lưu kết quả phép chia luôn là float hay gì đó ko phải kiểu nguyên. nhưng ít ai để ý rằng, đó ko phải là vấn đề quan trọng nhất, mà vấn đề cốt yếu nằm trong cái phép chia đó, nếu chia 2 số thực với nhau thì có gì xảy ra đâu? còn nếu như chia 2 số nguyên?
- Code:
-
float kq = 6/15;
sẽ ra nhiu? ra 0
và cách giải quyết đơn giản là vẫn phải ép kiểu các số hạng lên cho cùng kiểu với kết quả, thôi
- Code:
-
float kq = (float)6/15;
OK, nó ra số lẻ nhiêu đó. và tất nhiên là số đúng.
Túm lại 1 câu ở vấn đề 2: các bạn phải chú ý đến phép chia nhá, và các phép toán khác nếu gặp trường hợp như vậy, nhất là trong các bài toán tính trung bình cộng các số nguyên, đa số các bạn ko để ý đến việc này --> sai.
Túm lại: những cái này thật ko khó gì cả, nhưng lại ít ai để ý, nên mình mới đưa lên, ai bik rồi, hiểu siêu hơn thì đừng cười mà hãy góp ý thêm thôi nhá!
Cám ơn các bạn!