2010-04-02 15 views
9

Sto cercando di usare questa formula in JAVA: (-ln (1-L))/L
Non sono sicuro di come utilizzare ln in java.come utilizzare ln in Java

+1

Se sei un ragazzo di matematica alla ricerca a CS, fai attenzione ai calcoli in virgola mobile. A seconda di come realizzi e valuti le tue formule, ti ritroverai con diversi errori a causa del modo in cui la matematica in virgola mobile viene gestita internamente. Se si desidera una precisione a larghezza fissa su un valore elevato, è necessario esaminare altre librerie matematiche come 'java.lang.Math'. –

risposta

18

Math.log(d) restituisce il logaritmo naturale (base e) di un valore doppio.

Così il codice Java sarà,

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

(ma nota che è meglio avere i nomi delle variabili in minuscolo - cioè l invece di L)

+0

grazie! Ho un question..how in più devo arrotondare un numero in java (in C era abbastanza facile) per esempio io ho questo numero 22,0363456586776, ma voglio visualizzare 22,036,345659 millions –

+1

In generale, l'uso DecimalFormat: http: // java. sun.com/javase/6/docs/api/java/text/DecimalFormat.html Se hai un problema specifico, sentiti libero di postarlo come una domanda separata. – Pops

+0

Per la conversione in una stringa è possibile utilizzare String.format(), ad es. String.format ("%. 10f", x), per stampare System.out.printf(). – starblue

4

Anche io non ne avevo idea, ma dal momento che è una funzione matematica comune, ho controllato il Math class nel API.

Qui si va: the log method

EDIT: Ci scusiamo per collegamento interrotto, Markdown è fissato ora. Inoltre ho capito subito dopo aver postato questa risposta che suona snarky, che non era il mio intento; le riformulazioni lo fanno sembrare snarky E sarcastico, comunque. Volevo solo sottolineare che l'API è davvero utile per i metodi che ci si può ragionevolmente aspettare che emergano molto.

+0

Penso che -log1p (-L)/L potrebbe essere più preciso per il piccolo L. – extraneon

+0

Buon punto. @ fang, stai usando un valore grande o piccolo per L? – Pops

+0

questa è la formula che mi hanno dato. –