На этот вопрос уже достаточно подробно дан ответ, но вот экспериментальный способ убедиться, что Math.sqrt
является точным:
import static java.lang.Math.*;
public class Test {
public static void main(String[] args) {
double max = 0;
for (int i = 0; i < 100; i++) {
double r = random();
double err = abs(pow(sqrt(r), 2) - r) / ulp(r);
if (err > max) max = err;
}
System.out.println(max);
}
}
Это печатает 1.0
, подтверждая то, что говорится в документации - что значение, возвращаемое из sqrt
, будет в пределах одной единицы точности до точного ответа.