2010-04-02 45 views
9

Tôi đang cố gắng sử dụng công thức này trong JAVA: (-ln (1-L))/L
Tôi không biết cách sử dụng ln trong java.cách sử dụng ln trong Java

+1

Nếu bạn là một anh chàng toán tìm kiếm tại CS, hãy cảnh giác với các tính toán dấu chấm động. Tùy thuộc vào cách bạn tạo và ước tính công thức của mình, bạn sẽ kết thúc với một số lượng lỗi khác nhau do cách tính toán dấu phẩy động được xử lý nội bộ. Nếu bạn muốn độ chính xác cố định chiều rộng cho một số tiền cao, bạn sẽ muốn xem xét các thư viện toán học khác 'java.lang.Math'. –

Trả lời

18

Math.log(d) trả về logarit tự nhiên (cơ số e) của một giá trị kép.

Vì vậy, các mã java sẽ được,

double result = (-Math.log(1-L))/L; 

(nhưng lưu ý rằng nó tốt hơn để có những cái tên biến trong trường hợp thấp hơn - tức là l thay vì L)

+0

cảm ơn bạn! Tôi có một câu hỏi thêm .. làm thế nào để tôi làm tròn một số trong java (trong C là khá dễ dàng) ví dụ tôi có số này 22.0363456586776, nhưng tôi muốn hiển thị 22.036345659 –

+1

Nói chung, sử dụng DecimalFormat: http: // java. sun.com/javase/6/docs/api/java/text/DecimalFormat.html Nếu bạn gặp sự cố cụ thể, vui lòng đăng vấn đề đó dưới dạng câu hỏi riêng. – Pops

+0

Để chuyển đổi thành chuỗi, bạn có thể sử dụng String.format(), ví dụ: String.format ("%. 10f", x), để in System.out.printf(). – starblue

4

Tôi cũng không biết, nhưng vì đó là hàm toán phổ biến, tôi đã kiểm tra Math class trong số API.

Ở đây bạn đi: the log method

EDIT: Xin lỗi vì liên kết bị hỏng, Markdown là cố định ngay bây giờ. Ngoài ra tôi nhận ra ngay sau khi tôi đăng câu trả lời này nghe có vẻ khó hiểu, đó không phải là ý định của tôi; những từ ngữ lại chỉ làm cho nó có vẻ hơi lố bịch và châm biếm, mặc dù vậy. Tôi chỉ muốn nêu rõ rằng API thực sự hữu ích cho các phương pháp có thể được mong đợi hợp lý để đưa ra rất nhiều.

+0

Tôi nghĩ rằng -log1p (-L)/L có thể chính xác hơn cho nhỏ L. – extraneon

+0

Điểm tốt. @ fang, bạn đang sử dụng một giá trị lớn hay nhỏ cho L? – Pops

+0

thats công thức mà họ đã cho tôi. –

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