2012-11-30 22 views
15

Lết, chúng tôi đã đoạn mã sauTính Log cơ sở 2

(float)Math.Log(3.83031869) 

Kết quả tôi đã nhận là

1.342948 

Nhưng khi tôi tính toán log2 cho cùng một số sử dụng nhiều máy tính trực tuyến Tôi có

1.93746 

Có thể giải thích cho vấn đề này không? Cảm ơn trước.

Trả lời

6

Khi gọi phương thức Nhật ký chỉ với một đối số, bạn sẽ nhận được cơ sở Nhật ký e. Nếu bạn cung cấp đối số thứ hai của 2.0, bạn sẽ có được kết quả bạn mong đợi:

//Testing in LinqPad 
void Main() 
{ 
    Math.Log(3.83031869).Dump(); 
    Math.Log(3.83031869, 2.0).Dump(); 
} 

Kết quả

1.34294800860817 
1.93746443219072 
+0

Cảm ơn bạn Chris. BTW, tôi nhận được (-infinity) Log2 og của một số số. Làm thế nào tôi có thể giải quyết vấn đề này? – FSm

+1

Đầu vào nào gây ra kết quả đó? Theo tài liệu, điều đó xảy ra khi đầu vào là 0 và cơ số lớn hơn 1 hoặc trong đầu vào là + vô cùng và cơ sở nằm trong khoảng từ 0 đến 1. –

+0

Cảm ơn rất nhiều Charis – FSm

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