2010-11-09 33 views
16

thể trùng lặp:
Why does Math.Floor(Double) return a value of type Double?Tại sao C# Math.floor() trả đúp thay vì Int

Tại sao C# Math.Floor() trở double thay vì int

Từ MSDN Tài liệu:

Returns lớn nhất nguyên nhỏ hơn hoặc bằng với quy định tăng gấp đôi độ chính xác số dấu chấm động

nó nói nó sẽ trả về một số nguyên. Ok của nó để trở về một double, tôi luôn có thể đúc nó vào một int nhưng nó khá lạ, phải không?

+1

Chữ được viết kém. Có thể cho rằng nó nên nói "toàn bộ số" (hoặc cái gì khác, ngay cả trong các ghi chú) để tránh sự mơ hồ với với * int * eger kiểu dữ liệu (s). Tuy nhiên, [số nguyên] (http://en.wikipedia.org/wiki/Integer) là một thuật ngữ toán học, do đó, trong khi khó hiểu ở đây, về mặt kỹ thuật là chính xác. –

Trả lời

38

Không thực sự, xem xét rằng double có thể cao hơn nhiều so với int. Bạn sẽ không muốn tràn một int với giá trị lớn mà một đôi có thể được.

Chỉ cần để cho bạn thấy những gì tôi có nghĩa là:

Double.MaxValue = 1.7976931348623157E + 308

Integer.MaxValue = 2,147,483,647

Vì vậy, bạn có thể có một đôi đó là 3,000,000,000.50 và sàn nhà nó, mà sẽ tràn giá trị tối đa của một int.

+3

Đó là một lời giải thích tốt cho lý do tại sao nó có ý nghĩa ... giải thích tại sao nó là như vậy là đơn giản hơn nhiều mặc dù - kết quả FPU là một 'đôi'. Vì nhiều lần bạn muốn sử dụng nó như là một 'double' (có thể trừ nó từ đối số, để có được phần phân đoạn), nó sẽ không có ý nghĩa để chuyển đổi nó và sau đó phải chuyển đổi nó trở lại. –

+1

@Ben Voigt - Cũng là một điểm tốt, nhưng không giải thích tại sao giá trị trả về KHÔNG thể là kiểu Integer như verges tài liệu khi đề xuất. Chỉ vì FPU xuất ra một cái gì đó không có nghĩa là một phương thức cần trả về kết quả đó, đặc biệt trong một môi trường thời gian chạy không phải là bản địa. Các tài liệu MSDN có lẽ nên đã sử dụng cụm từ "một phần không thể thiếu" hoặc một cái gì đó như thế để thay thế để tránh nhầm lẫn với tên loại. – userx

+2

nếu nó là một điều kích thước, chắc chắn họ chỉ có thể trả về một/Int64 dài? – mike

3

ĐẦU VÀO là một đôi, các OUTPUT cũng phải là một đôi, hoặc rất nhiều sản lượng tiềm năng sẽ không phù hợp với các biến đầu ra.

Trong thuật ngữ toán học, tên miền và phạm vi của hàm phải có cùng kích thước.

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