Trong Java, tôi muốn chuyển đổi một số kép thành một số nguyên, tôi biết nếu bạn làm điều này:
double x = 1.5;
int y = (int)x;
bạn nhận được y = 1. Nếu bạn làm điều này:
int y = (int)Math.round(x);
Bạn có thể sẽ nhận được 2. Tuy nhiên, tôi đang tự hỏi: vì các biểu diễn kép của số nguyên đôi khi trông giống như 1.9999999998 hoặc một cái gì đó, nên có khả năng truyền một kép được tạo qua Math.round () vẫn sẽ dẫn đến một số bị cắt bớt, thay vì so với số được làm tròn mà chúng ta đang tìm kiếm (tức là: 1 thay vì 2 trong mã như được đại diện)?
(và vâng, ý tôi là: Có bất kỳ giá trị nào cho x không, trong đó y sẽ hiển thị kết quả là một biểu diễn cắt ngắn chứ không phải là một biểu diễn làm tròn của x?)
Nếu vậy: Có cách nào tốt hơn để tạo một nhân đôi thành một số nguyên được làm tròn mà không có nguy cơ bị cắt bớt?
Đã tìm ra điều gì đó: Math.round (x) trả về một giá trị dài, không phải là một đôi. Do đó: Math.round () không thể trả về một số giống như 3,9999998. Do đó, int (Math.round ()) sẽ không bao giờ cần phải cắt bớt bất cứ thứ gì và sẽ luôn hoạt động.