Согласно документации Java, Math.sqrt()
возвращает "двойное значение, наиболее близкое к истинному математическому квадратному корню из значения аргумента", а приведение double
к int
эквивалентно настилу для неотрицательных чисел (для отрицательных чисел floor()
усекается до отрицательной бесконечности при приведении усекает к 0). Единственный случай, когда я могу вспомнить, где (int)Math.sqrt(x)
не справился бы с работой, это если квадратный корень слишком велик, чтобы поместиться в int
.
Дополнительные ссылки
https://docs.oracle.com/javase/7/docs/api/java/lang/Math.html#sqrt(double)