2010-04-02 11 views
9

Staram się korzystać z tej formuły w Java: (ln (1-L))/L
Nie jestem pewny jak używać ln w Javie.jak używać ln w Javie

+1

Jeśli jesteś matematyki facet szuka w CS, uważaj na obliczenia zmiennoprzecinkowe. W zależności od tego, w jaki sposób tworzymy i oceniamy formuły, otrzymasz różne błędy w związku z tym, jak matematyka zmiennoprzecinkowa jest obsługiwana wewnętrznie. Jeśli chcesz uzyskać precyzję o stałej szerokości do dużej wartości, będziesz chciał zajrzeć do innych bibliotek matematycznych 'java.lang.Math'. –

Odpowiedz

18

Math.log(d) zwraca logarytm naturalny (podstawa e) podwójnej wartości.

Więc kod Java będzie,

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

(należy jednak pamiętać, że lepiej jest mieć nazwy zmiennych małymi literami - czyli l zamiast L)

+0

dziękuję! Mam dodatkowe pytanie ... jak mogę zaokrąglić liczbę w java (w C było dość łatwe) na przykład Mam tę liczbę 22.0363456586776, ale chcę wyświetlić 22.036345659 –

+1

Ogólnie, użyj DecimalFormat: http: // java. sun.com/javase/6/docs/api/java/text/DecimalFormat.html Jeśli masz konkretny problem, możesz go opublikować jako osobne pytanie. – Pops

+0

Do konwersji na ciąg można użyć String.format(), np. String.format ("% .10f", x), do drukowania System.out.printf(). – starblue

4

Ja też nie miałem pojęcia, ale ponieważ jest to zwykła funkcja matematyczna, sprawdziłem Math class w API.

Proszę bardzo: the log method

EDIT: Przepraszam za niedziałający link, Markdown jest stała teraz. Uświadomiłem sobie zaraz po tym, jak napisałem tę odpowiedź, że brzmi to snarka, co nie było moim zamiarem; Ponowne sformułowania sprawiają, że wydaje się to złośliwe i sarkastyczne. Chciałem tylko podkreślić, że API naprawdę przydaje się w przypadku metod, które można rozsądnie oczekiwać.

+0

Myślę, że -log1p (-L)/L może być dokładniejsze dla małych L. – extraneon

+0

Dobra racja. @fang, czy używasz dużej lub małej wartości dla L? – Pops

+0

To wzór, który mi dali. –