2013-08-31 2 views
0

Я новичок в JAVA, и я пытаюсь выучить язык; извините, если я буду глуп.System.out.print (Math.pow (9, 1/3)); Результат = 1,0; Зачем?

Итак, я тестировал Math.Pow() и наткнулся на это, когда я использую функцию деления во втором аргументе, мой результат всегда равен «1.0», независимо от того, какие значения я вставляю в оба аргумента. Помогите?

public static void main(String[] args) { 

    double a= 27 , b = 1/3 ; 
    System.out.println(Math.pow(a,b)); 
} 

выполнения: 1.0 строить успешные (общее время: 0 секунд)

ответ

5

1/3 равен нулю. Math.pow(a,0) - 1 для всех a != 0, в частности для a = 27.

Деление выполняется между двумя целыми числами с использованием целочисленного деления, прежде чем результат будет преобразован в double. Вы можете получить результат, который вы ищете, гарантируя, что число выполняется с использованием двойного деления, например. 1.0/3.

+0

Oh! Я понял. Большое спасибо. –

2

1/3 - целочисленное деление, которое должно оцениваться как 0 в качестве целого числа, прежде чем установить его равным b. Это сделало бы b = 0, поэтому Math.pow (27, 0) = 1.

Измените это на 1.0/3.0, тогда оно станет 0.3333. Это то, что вы хотите.