Почему Math.pow (long, (1/3)) всегда возвращает 1? - PullRequest
6 голосов
/ 21 февраля 2011

Если проблема во власти, как правильно ее написать?

Ответы [ 2 ]

27 голосов
/ 21 февраля 2011

Это потому, что 1/3 является целочисленным делением, и оно оценивается как 0.Вы эффективно повышаете до 0-й степени, которая всегда дает 1. Попробуйте вместо этого 1.0/3.0.

14 голосов
/ 21 февраля 2011

Попробуйте Math.pow(long, 1D/3).

По умолчанию числовые литералы в Java считаются целыми числами. Таким образом, 1/3 преобразуется в 0, а не в 0,33333, как должно быть. Квалификация с 1D или 1F или 1.0 решит проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...