Wie berechnet man ^ (1 / n)?

8

Ich versuche a^(1/n) zu berechnen, wobei ^ Exponentiation bedeutet.

Allerdings Folgendes:

%Vor%

gibt 1.0 zurück, anstatt 2.0 zurückzugeben.

Warum ist das so?

    
GltknBtn 11.04.2013, 17:58
quelle

3 Antworten

17

Das Problem ist, dass 1/3 ganze Zahlen verwendet (trunkierende) Division , deren Ergebnis Null ist. Ändern Sie Ihren Code in

%Vor%

(Das . wandelt das 1. in ein Fließkomma-Literal um.)

    
NPE 11.04.2013, 18:00
quelle
5

1/3 wird 0 (Weil 1 und 3 als int Literale verwendet werden).

Also sollten Sie diese Literale float / double machen ...

Mach:

Math.pow(8, 1f/3) oder

Math.pow(8, 1./3) oder

Math.pow(8, 1.0/3)

    
Sam 11.04.2013 18:05
quelle
4

Versuchen Sie stattdessen Math.pow(8, (1.0f / 3.0f)) .

1 / 3 führt eine ganzzahlige Division durch, die Ihnen 8 ^ 0 = 1

liefert     
ssantos 11.04.2013 18:01
quelle