sqrt требует int, но я уже использую int

int Asum,temp4;
temp4=Math.sqrt(Asum);

Это часть кода, который я пишу. Я объявил Asum и temp4 целыми числами. Я пытаюсь получить sqrt Asum и назначить его temp4. но по какой-то причине java дает мне ошибку: возможная потеря точности. требуемое = целое. найдено = двойное. Мне нужно, чтобы temp4 и Asum были целыми числами. и нет необходимости получать точные десятичные значения, мне просто нужны округленные целые числа.


person SirVirgin    schedule 19.04.2015    source источник
comment
Прочитайте javadoc Math.sqrt(). Какой тип возврата? Это инт?   -  person JB Nizet    schedule 19.04.2015


Ответы (3)


Вы пытались добавить явное приведение к типу int, чтобы компилятор знал, что вы знаете, что делаете?

temp4= (int) Math.sqrt(Asum);
person FooTheBar    schedule 19.04.2015

temp4 не должен быть целым числом... это может быть число с плавающей запятой.

person tanaydin    schedule 19.04.2015
comment
Он должен быть double, иначе OP должен привести результат к соответствующему типу. - person Svetlin Zarev; 19.04.2015

Я думаю, вам нужно использовать функцию Math.round.

Пытаться:

temp4=Math.round(Math.sqrt(Asum));
person Tech Lobster    schedule 19.04.2015
comment
это все еще дает мне ту же ошибку, но это подойдет для моих целей. Благодарность! - person SirVirgin; 19.04.2015