def sqrt_decimal_expansion(n: int, precision: int) -> str:
    """Finds the square root of a number to arbitrary decimal precision.

    Args:
        n: A positive integer value.
        precision: The desired number of digits following the decimal point.

    Returns:
        A string representation of ``sqrt(n)`` in base 10 that includes the
        first ``precision`` digits after the decimal point.
    """

    # break n into two-digit chunks
    n_digits = []
    while n > 0:
        n, mod = divmod(n, 100)
        n_digits.append(mod)
    n_digits.reverse()

    expansion = []
    remainder = 0
    root_part = 0

    def f(x: int) -> int:
        return x * (20 * root_part + x)

    # compute digits before decimal point
    for carry in n_digits:
        a = 1
        b = f(a)
        c = remainder * 100 + carry
        while b <= c:
            a += 1
            b = f(a)

        a -= 1
        b = f(a)
        remainder = c - b
        root_part = root_part * 10 + a
        expansion.append(str(a))

    expansion.append('.')

    # compute digits after decimal point
    for _ in range(precision):
        a = 1
        b = f(a)
        c = remainder * 100
        while b <= c:
            a += 1
            b = f(a)

        a -= 1
        b = f(a)
        remainder = c - b
        root_part = root_part * 10 + a
        expansion.append(str(a))

    return ''.join(expansion)