Trong Java, tôi muốn chuyển đổi một đôi để một số nguyên, tôi biết nếu bạn làm điều này:chuyển đổi gấp đôi lên số nguyên trong java
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 rất có thể sẽ nhận được 2. Tuy nhiên, tôi tự hỏi: kể từ khi tuyên bố tăng gấp đôi số nguyên đôi khi trông giống như 1,9999999998 hoặc một cái gì đó, lại có một khả năng mà đúc một đôi tạo thông qua Math.round() sẽ vẫn dẫn đến số bị cắt bớt, thay vì số được làm tròn mà chúng tôi đang tìm kiếm (ví dụ: 1 thay vì 2 trong mã như được trình bày)?
(và vâng, tôi có nghĩa là nó như vậy: Có giá trị bất kỳ cho x, trong đó y sẽ hiển thị một kết quả đó là một cắt ngắn chứ không phải là một đại diện tròn của x?)
Nếu vậy: Có cách nào tốt hơn để làm cho một đôi vào một int tròn mà không chạy nguy cơ cắt ngắn?
Đã tìm ra điều gì đó: Math.round (x) trả về một khoảng thời gian dài chứ không phải gấp đôi. Do đó: Math.round() không thể trả về một con số trông giống như 3.9999998. Vì vậy, int (Math.round()) sẽ không bao giờ cần phải cắt ngắn bất cứ điều gì và sẽ luôn luôn làm việc.
Math.round (double) trả về một khoảng thời gian dài chứ không phải gấp đôi. – qbert220