2012-03-21 18 views

Trả lời

37

Có một số khác biệt giữa đúc một loại tách rời và sử dụng Math.floor:

  1. Khi đúc đến một loại không thể thiếu, bạn sẽ kết thúc với một loại tích phân (rõ ràng). Vì vậy, nếu bạn muốn giữ số như là một đôi, sử dụng Tầng là dễ dàng hơn.
  2. Kết quả là 1, quá trình truyền sẽ không hoạt động chính xác nếu số đã cho quá lớn để được thể hiện bằng loại tích phân nhất định (đôi có thể biểu thị số lớn hơn nhiều so với số lượng dài).
  3. Vòng tròn về phía vô cực âm. Đúc vòng về không.
11

Math.Floor là một hoạt động cơ bản khác nhau từ cắt ngắn vì nó xử lý số âm khác nhau. Math.Floor(-1.5) == -2.0, trong khi (int)-1.5 == -1.

19

Nó khác cho các giá trị tiêu cực:

double num = -1.3; 
double floor = Math.Floor(num); // = -2 
long cast = (long)num; // = -1 
7

Bên cạnh những câu trả lời khác, đừng quên đúc mà có thể thất bại nơi Floor sẽ thành công:

decimal d = decimal.MaxValue; 

decimal f = Math.Floor(d); // succeeds 
long l = (long)d;    // fails 
1

Thậm chí nếu bạn chỉ giao dịch với giá trị tích cực, một giá trị double không luôn phù hợp với một số long.

Xem phạm vi của longdouble trên MSDN.

+3

Trong khi điều này là đúng, chức năng 'Tầng' sẽ không ảnh hưởng đến các giá trị không vừa với' long'. – Gabe

Các vấn đề liên quan