2010-06-28 52 views

Trả lời

6

Đề xuất cách thực hiện có thể được thực hiện here.

Dưới đây là một giải pháp từ trang web đó:

private static double pow(double base, int exp){ 
    if(exp == 0) return 1; 
    double res = base; 
    for(;exp > 1; --exp) 
     res *= base; 
    return res; 
} 

public static double log(double x) { 
    long l = Double.doubleToLongBits(x); 
    long exp = ((0x7ff0000000000000L & l) >> 52) - 1023; 
    double man = (0x000fffffffffffffL & l)/(double)0x10000000000000L + 1.0; 
    double lnm = 0.0; 
    double a = (man - 1)/(man + 1); 
    for(int n = 1; n < 7; n += 2) { 
     lnm += pow(a, n)/n; 
    } 
    return 2 * lnm + exp * 0.69314718055994530941723212145818; 
} 
2

Tôi đã sử dụng lớp "Float11" Nikolay Klimchuk cho phép tính dấu chấm động trong Java ME. Liên kết ban đầu dường như bị hỏng nhưng có sẵn here.

+0

Wow, lớp học của tôi vẫn còn sau tất cả những năm này ... –

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