Математически правильный результат из Math.sqrt для аргументов int? - PullRequest
1 голос
/ 26 апреля 2019

При int x гарантированно (int)Math.sqrt(x) будет возвращаться математически правильный результат, усеченный до целого (т. Е. Точное математическое значение floor(sqrt(x))) для всех неотрицательных x?

1 Ответ

0 голосов
/ 26 апреля 2019

Согласно документации 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)

...