Using the sqrt
function which is provided with the xintexpr package you can calculate square roots with arbitrary precisions.
I have updated this answer to illustrate use of the new [P]
optional argument to \xintfloatexpr
(v1.1) and rounded integral square root in \xintiiexpr
(v1.1a).
Also, one can use directly the underlying macros from packages xint and xintfrac. See the documentation.
\documentclass{article}
\usepackage{xintexpr}
\begin{document}
$\sqrt{17}$ with various precisions:
% Square root with 16 digits of precision:
\xintthefloatexpr sqrt(17)\relax
% If you have a LaTeX counter, use \value:
\newcounter{cnt}
\setcounter{cnt}{17}
% \xintthefloatexpr sqrt(\value{cnt})\relax
% Square root with more digits:
\xintthefloatexpr [24] sqrt(17,24)\relax
% The 24 is needed twice, once for sqrt to compute with
% 24 digits, and once for \xintthefloatexpr not to
% round to only 16 digits.
% The [24] requires xintexpr v1.1 or later.
% Or change globally the precision:
\xintDigits := 48;
\xintthefloatexpr sqrt(17)\relax
% There is a variant which works only with (big) integers.
% You can use choose between sqrt which truncates and sqrtr
% which rounds. The latter requires xintexpr v1.1a or later.
Integer approximation to $\sqrt{170000000000000000}$:
\xinttheiiexpr sqrt(170000000000000000)\relax{} (truncated using \verb|sqrt|)
\xinttheiiexpr sqrtr(170000000000000000)\relax{} (rounded using \verb|sqrtr|)% v1.1a or later
% This can be put in a LaTeX counter if <2^31.
A counter can not hold larger than $\number"7FFFFFFF$.
\setcounter{cnt}{\xinttheiiexpr sqrtr(170000000000000000)\relax}
The counter holds: $\thecnt\approx \sqrt{170000000000000000}$.
\setcounter{cnt}{\xinttheiiexpr sqrtr(1700000000000000000)\relax}
The counter holds $\thecnt\approx \sqrt{1700000000000000000}$.
% Rather than expressions with the function sqrt, one
% can also use directly the underlying macros provided
% by xint and xintfrac package. See xint documentation.
\end{document}

expl3
'sl3fp
module,calculator
,fp
) but that won't help for storing the results in a counter for the reasons already mentioned.\usepackage{pgf}
, you can use\pgfmathsetmacro{\squarerootofmynumber}{sqrt(\value{mynumber})}
.