Trong ví dụ được cung cấp, số thập phân của bạn là 8,6 . Nếu nó là 8,5 hoặc 9,5, câu lệnh i1 == i2 có thể đúng. Trong thực tế, nó sẽ đúng với 8,5 và sai với 9,5.
Giải trình:
Bất kể phần thập phân là gì, câu lệnh thứ hai int i2 = (int)score
sẽ loại bỏ phần thập phân và chỉ trả lại cho bạn phần nguyên. Việc làm khá nguy hiểm vì có thể xảy ra mất dữ liệu.
Bây giờ, đối với tuyên bố đầu tiên, hai điều có thể xảy ra. Nếu phần thập phân là 5, tức là nó đã đi được một nửa, một quyết định sẽ được đưa ra. Chúng ta làm tròn lên hay xuống? Trong C #, lớp Convert thực hiện việc làm tròn của banker. Xem câu trả lời này để giải thích sâu hơn. Nói một cách đơn giản, nếu số chẵn thì làm tròn xuống, nếu số lẻ thì làm tròn lên.
Ví dụ: Hãy xem xét:
double score = 8.5;
int i1 = Convert.ToInt32(score); // 8
int i2 = (int)score; // 8
score += 1;
i1 = Convert.ToInt32(score); // 10
i2 = (int)score; // 9
Math.Truncate(score)
được thể hiện một cách rõ ràng hơn ý hơn(int)score